1.請分別列舉 5 個 HTML5 新增的元素和 5 個 CSS3 新增屬性:
5 個 HTML5 新增的元素:
section娜亿,nav岗喉,time坯癣,mark哼勇,header, footer……
5 個 CSS3 新增屬性:
box-shadow都伪, text-shadow,background-size积担,background-clip陨晶,mask, transform帝璧,filter……
2.data-屬性的作用是什么先誉?
data 自定義屬性作用:
1. data 自定義屬性,本質就是給元素添加了個自定義屬性的烁,
本來沒有什么特殊的褐耳,只是一個官方化的自定義屬性的添加方式,
在 js 中可以通過 dataset 統(tǒng)一管理渴庆;
2. 通常的作用铃芦,一般我們會在 data 中存儲一些和當前元素關聯(lián)度比較大的數(shù)據(jù)雅镊;
3. 一般也會用來做元素關聯(lián),比如給元素加索引刃滓。
3.請書寫一個三列式布局仁烹,左右各200px,中間自適應寬度咧虎?
4.請描述一下 JavaScript 事件冒泡機制卓缰?
當頁面中某個元素的事件被觸發(fā)以后,比如點擊了頁面中的某個按鈕砰诵,
就觸發(fā)了當前按鈕的點擊事件征唬,但是 JavaScript 并不是簡單就直接觸發(fā)該元素的相應事件,
而是會首先從 DOM 樹的最頂層(window)依次的去觸發(fā)目標(被直接點擊的)元素所有父級的同類事件胧砰,
直到觸發(fā)到目標元素鳍鸵,然后又會再一次的從目標元素開始觸發(fā)其所有父級的所有同類事件直到window,
也就是同類型事件的目標元素與 window 之間觸發(fā)一個來回尉间,
window 到目標的觸發(fā)階段偿乖,我們稱為捕獲階段,
目標觸發(fā)事件的時候我們稱為目標階段哲嘲,
而最后目標到 window 的觸發(fā)階段贪薪,我們稱為冒泡階段。
這種機制我們稱為事件流(event flow)眠副,冒泡機制其實就是事件流機制中的冒泡階段規(guī)則画切。
5. "==" 和 "===" 有什么不同
1. 相同的是:== 和 === 都是比較等值比較運算符,返回的布爾類型的比較結果囱怕。
2. 不同的是:
1) == 是等值比較運算符霍弹,使用的是 抽象等值 比較算法。
=== 是嚴格等值比較運算符娃弓,使用的 嚴格等值 比較算法典格。
2) == 運算符在比較值的時候,會根據(jù)兩者類型是否相同而做不同的處理台丛,
在兩者不同類型的時候耍缴,會轉換類型后進行比較:
基本類型會轉成數(shù)字,引用類型會轉成對象原始值挽霉,然后再進行比較防嗡。
而 === 首先也會判斷類型是否一致,不同的是如果類型不一致則直接返回 false侠坎。
6.window.foo || (window.foo = "bar"); 返回值是什么蚁趁?
|| 又稱為短路或,短路:如果左側為真硅蹦,則不再進行右側運算荣德,同時返回左側表達式運算結果闷煤。
如果左側為假則執(zhí)行右側表達式運算童芹,并返回右側計算結果涮瞻。
上面window.foo是不存在的,所有結果為undefined假褪,轉成boolean就是false署咽,
那么就會運算 window.foo = "bar",
把 "bar" 賦值給 window.foo 的同時生音,
返回值也是 "foo"宁否,所以打印返回結果是 "bar"
7.請解釋 JQuery 中 .end() 的用途?
返回當前jq對象的上級jq對象
分析:
1. 當我們通過$()會得到一個對象
$jq1 = $('#div1');
2. jq對象下有一系列的方法缀遍,有的方法會返回一個新的對象
// 通過$jq1的find返回了一個新的jquery對象
var $jq2 = $jq1.find('p');
3. 這個時候在$jq2下面有一個屬性 prevObject慕匠,該屬性保存的就是 $jq1,通過比較 $jq2.prevObject == $jq1域醇,會發(fā)現(xiàn)返回true台谊。
4. 通過 prevObject 屬性會產生一個類似原型鏈的引用,
而 .end() 方法就是返回就是當前 JQ 對象的 prevObject 對象譬挚,
也就是當我們 $jq2.end() 的時候锅铅,返回的就是上層的 $jq1。
8.注冊賬號要求以字母開頭减宣,可以包含字母盐须、數(shù)字、下劃線漆腌,請寫出驗證該賬號的正則表達式
/^[a-zA-Z]\w+$/
9.請列舉三種減低頁面加載時間的方法贼邓。(加載時間指感知的時間或者實際加載時間)
1. 減少實際加載時間
1. 減少 http 請求(合并文件、合并圖片)
2. 壓縮 JavaScript闷尿、CSS 代碼
3. 啟用服務器壓縮傳輸(如 gzip)
2. 減少感知時間
1. script 外部腳本加載放到 html 最后進行
2. 按需加載資源(如:只加載當前能看到的區(qū)域的圖片)
10."I'm lasagna hog".split("").reverse().join(""); 語句的返回值是什么塑径?
goh angasal m'I
分析:
1. split(""),拆分字符串悠砚,得到數(shù)組:
["I", "'", "m", " ", "l", "a", "s", "a", "g", "n", "a", " ", "h", "o", "g"]
2. 對數(shù)組使用.reverse()晓勇,翻轉數(shù)組,得到:
["g", "o", "h", " ", "a", "n", "g", "a", "s", "a", "l", " ", "m", "'", "I"]
3. 最后使用join("")灌旧,把數(shù)組再次拼接成字符串绑咱,得到字符串:goh angasal m'I
11.$(function(){console.log(1)}); 和 window.onload = function(){console.log(2)};代碼執(zhí)行結果是什么?能否詳細說明原因枢泰?
這里重點是:JQ 的 $(function(){}) 和 window.onload = function(){}描融,并不等同
1. window.onload 是頁面資源加載完成后觸發(fā)的事件,
比如頁面中有圖片需要加載衡蚂,那么onload是等圖片加載完成以后才觸發(fā)的窿克。
2. 而 JQ 中 $(function) 監(jiān)聽的是 DOMContentLoaded 事件骏庸,而該事件只需要把 HTML 結構加載完成就會觸發(fā)
(一般我們js操作的就是頁面元素,所以只需要等結構加載完成能操作頁面元素就可以了)
所以該事件會比 onload 事件要先觸發(fā)年叮,所以 1 先執(zhí)行具被。
12.請指出 JQuery中 ".bind()"、".live()" 和 "delegate()" 的區(qū)別只损?
1. bind:把函數(shù)直接綁定到指定元素的指定事件上一姿。
2. live:把函數(shù)綁定到document上,接收選擇器和事件類型作為參數(shù)跃惫,
當觸發(fā)一個元素的事件的時候叮叹,會利用事件冒泡到document上這一特性,
判斷事件目標元素和綁定參數(shù)中的選擇器是否匹配爆存,
如果匹配則執(zhí)行綁定函數(shù)的執(zhí)行蛉顽。
3. delegate:和live有點類似,但是可以指定綁定元素先较,而不是document携冤,
其他和live一致,但是比live更加靈活拇泣。