1.web標準是什么?
結構-樣式-行為(html-css-javascript)
2.css樣式層級?
!important>行間>id>類>標簽>通配符(*)
3.網頁解析?
結構(html)-樣式(css)-行為(javascript)
4.js中全局變量屬于?怎樣解決他不是window的?改變他的指向?es6中的箭頭函數嵌套this的指向就不會直接指向window
5.return的特性?阻止return之后的代碼執行,封裝函數,返回函數的值如沒有具體的返回值就返回undefined
6.阻止默認事件
(1)return false (2)preventDefault (3)event.returnValue=false
7.批量修改樣式?
(1)ie用style.cssText={},
(2)with(obj.style)有缺限自己嘗試
(3)改類名
8.提取css非行間樣式
currentStyle[]
getComputedStyle(obj,false)[]
9.break結束循環continue跳出本次循環可以在while中使用
10.循環語句
for(var i in obj)
for
while
for Each
map循環
11.判斷語句
if else適合于區間的判斷
switch適合離散值判斷
三步運算符判斷 1>2?1:2;()
12.什么是真(true)、什么是假(false)?
true:非空字符串、非空對象、非0數字
false:0 、空字符、undefined、null、NaN
13數據類型(7種)
number、object、string、symbol、null、bollean、undefined
14.檢測數據類型 typeOf
什么時候返回undefined:(1)函數沒有返回值(2)返回不存在的屬性(3)變量沒賦值
undefined/not define 前者是未定義,后者是未聲明,不可判斷
15.字符串方法
charAt()、獲取某一位置的字符串,查找給定位置的字符
indexof()它從字符串的開頭開始查找,找到返回對應坐標,找不到返回-1。
lastindexof()它從字符串的末尾開始查找,找到返回對應坐標,找不到返回-1。
tolowerCase()轉換為小寫字符串
toUpperCase()轉換為大寫字符串
splice()截取字符串
split() split()的第二個參數,表示返回的字符串數組的最大長度。
substr() substr 方法用于返回一個從指定位置開始的指定長度的子字符串。stringObject.substr(start [, length ])
substring()、substring 方法用于提取字符串中介于兩個指定下標之間的字符,取頭不取尾。 stringObject.substring(start,stop)
replace()、默認只替換第一次查找到的,想要全局替換,需要置上正則全局標識
concat()字符串連接,concat()函數可以有多個參數,傳遞多個字符串,拼接多個字符串。
dram()去掉收尾空格(不兼容)
16.數組方法
push()
pop()、
shift()、
unshift()、
splice()、
join() 使用您選擇的分隔符將一個數組合并為一個字符串
reverse()、
sort()
17.嚴格模式的好處
解決了this的全局指向,變量必須聲明(不支持with)
this問題?在定時器中也用es6的箭頭函數可解決
循環中加事件,i的問題:(1)自定義屬性IE不兼容,加在行間會過濾掉,但可以用在js中(2)封閉空間(自執行函數)
18.獲取表單元素的內容?obj.value()
19.ajax?
字符串轉對象 eval
解析字符串?new function{
return 一個變量
}
20.鼠標事件
onclick 點擊
ondblclick雙擊
onload 加載完成
onchange配合select改變時
onpropertychange配合input在IE下兼容input的
onblur失去焦點
onfocus獲取焦點
onscroll滾動
onsubmit表單提交
onselect下拉選中時
onmouseover鼠標移動到目標上時觸發
onmouseleave離開指定元素的范圍(區域)
onmouseout鼠標移除離開指定元素
onmouseup鼠標抬起
onmousedown鼠標按下
onmousemove鼠標移動
onkeydown鍵盤按下
onkeyup鍵盤抬起
oncontextmenu右鍵
onmousewheel滾輪
21.event兼容?ev||event;ev兼容高版本瀏覽器 event兼容各大瀏覽器
事件綁定?addeventlistener("事件名","對調函數","false")//true冒泡 false 捕獲
兼容IE事件綁定?attachEvent(on"事件名","回調函數",false)
解除事件綁定removeEvent()、detachEvent()IE下的解除綁定
阻止冒泡事件stopPropagation();event.cancelBubble=true;return false既可以阻止事件冒泡,又可以阻止事件默認行為
22.事件捕獲?
setcapture()、relishcapture()
23.事件委托
targat=ev.srcElement||ev.target;
24.滾輪事件
滾動距離 :document.body.scrolltop滾動頂部距離 document.body.scrollleft滾動左部距離
滾動方向
獲取可是區域鼠標的坐標
25.DOM
創建DOM,
添加節點
克隆
獲取節點
檢測節點類型 Nodetype
26.BOM的屬性:window、screen、location、history、Navigator、Timing、Cookies、PopupAlert
27.UA
28.getBoundingClientRect() 解決穿墻中的問題
- .(點)是標識符;[]是表達式;{}是json對象
30.常見的瀏覽器內核:
Trident內核 Internet Explorer,又稱其為IE內核
31.異步加載,直接設置在script標簽 async defer(IE)
32.優化js
減少http請求;合并文件;精靈圖 雪碧圖;減少dns 查詢(dns域名解析,避免重定向《也就是再發一次ajax請求,比如不可直接換src,使用ajax可以緩存》);減少DOM操作(所有的結構會重新解析,引起重排html,重繪css)
33.server 方面
使用CDN 網上加速