很直接!就是考察最近學習了沒?學到了點啥?若是沒學還真很差糊弄。javascript
享受代碼運行成功時的成就感。css
參考連接html
喜歡用Mac、sublime、chrome等。html5
參考連接java
參考連接node
參考連接jquery
參考連接css3
語義化一句話來歸納就是使用正確的標籤作正確的事。在沒有css樣式的狀況下,也能使網站層次清晰可讀。語義化的好處之一是還利於網站的SEO。git
參考連接github
我真的喜歡兩個空格縮進。「它是惟一一種在全部瀏覽器裏顯示一致的縮進方式。」
Chrome Web Developer Tools
HTML5
網頁經過標準定製機構定製統一標準才能更好的發展。
IE下css文件中使用@import帶來的Flash of Unstyled Content。使LINK標籤將樣式表放在文檔HEAD中。
用來講明使用的HTML是什麼版本。
盒模式的解析。
強制規定本來靈活的HTML語言來遵循XML的嚴格規範,明顯與時代發展相悖。
HTML5新增的能夠用來統一存放數據的屬性,還能用來存放JSON格式。
Geolocation/Web Socket/Canvas/Video/HTML5 forms/Web Workers
抹平不一樣瀏覽器初始化樣式。推薦normalize.css
浮動會使節點脫離文檔流。
overflow:hidden
:內容不擔憂被截斷時很方便。將多個小圖標統一排列到一張圖片再使用background-position來選取以減小HTTP請求數。
.header{ text-indent: 100%; overflow: hidden; white-space: nowrap; }
略。
略。
bootstrap。
Media query
參考連接
爲打印媒體添加打印樣式。
<link rel="stylesheet" type="text/css" href="print.css" media="print" />
or
@media print{ div{ /**/ } }
優勢:變量、mixin、大量插件。 缺點:上手速度。
可以使用@font-face,不支持的瀏覽器儘可能使用圖片。
從選擇器最右邊開始一層層解析並判斷。
盒模型包括margin/border/padding/content。CSS3中使用box-sizing:
利用事件冒泡到父節點,再查找事件源event.target
是哪一個子節點。
對象中的this指向當前對象,函數中的this始終指向當前做用域的上下文(上下文能夠被修改)。
當查找對象的屬性時,首先在該對象自己查找,不然追溯到其原型去找,直到查找到Object.prototye爲止。
名值對組成的對象或JSON數據格式。
function foo(){ }();
函數聲明不能直接被調用。須要用括號包裹或者前面加操做符使其變爲函數表達式。
參考連接
他們都表示空值,並且 null == undefined,可是屬於不一樣的基本數據類型。
閉包可讓外部做用域使用內部做用域的變量。當外部做用域執行完畢後,內存也不會被釋放。這是JS強大功能的一面。
arr.forEach(function(value, index){})
利用IIFE和閉包的概念,返回內部程序接口供外部使用。既不污染全局變量,又能導入外部引用對象。
宿主對象是指DOM(document)和BOM(window)。原生對象是Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、Math等對象。
function Person(){} var person = Person(); var person = new Person();
上面的this指針指向window對象,下面的this指向新生成對象,最後該對象賦給person。
.call
和 .apply
的區別是什麼?接受的參數形式不一樣:call接受參數列表形式,apply接受數組/類數組形式。
fn.call(context, 1, 2, 3) fn.apply(context, [1, 2, 3]) fn.apply(context, arguments)
Function.prototype.bind
的做用?擴展函數原型,使全部函數都新增bind方法,該方法能夠綁定該函數執行上下文後返回一個新函數。
剛開始寫就會注意優化。
當查找對象的屬性時,首先在該對象自己查找,不然追溯到其原型去找,直到查找到Object.prototye爲止。
document.write()
?大多數生成的廣告代碼依舊使用 document.write()
,雖然這種用法會讓人很不爽。幾乎不用。
特性檢測更適合針對實現了特定特性的瀏覽器進行操做。UA字符串因爲被瀏覽器廠商能夠隨意修改所以不太靠譜。
XMLHttpRequest對象,方法有open
、get
、send
等。
參考連接
參見連接
一種跨域方法,讓遠程服務器把接受到的參數做爲方法名包裹查詢的數據後返回,在本地調用該方法。JSONP沒用到XMLHttpRequest對象。
瞭解Mustache。使用過UnderscoreJS自帶模版。
做用域內全部變量聲明都被提到頂部,被提高的變量初始值爲undefined,執行到所在行時才真正賦值。
IE支持事件冒泡,Netscape支持事件捕獲,W3C創建先捕獲-後冒泡機制。
擴展內置對象會形成混亂。
雖然會強壯JS的原生功能,但仍是不是好作法。
ready事件監聽DOM樹的加載完成時間,先於onload的頁面全部內容加載完畢時間。
=== 不會作隱式類型轉換
瀏覽器的安全策略,限制了不一樣域名甚至不一樣端口的js文件的交互方式。
類式繼承:參考連接
function Person(name){ this.name = name } Person.prototype.sleep = function(){ console.log(this.name + ' is sleeping.') } function Student(name){ Person.apply(this, arguments) } Student.prototype = new Person() var lilei = new Student('li lei') lilei.sleep()
原型繼承:參考連接
function Person(){} Person.prototype.sleep = function(){ console.log(this.name + ' is sleeping') } function inherit(o){ var F = function(){} F.prototype = o return new F } function Student(name){ this.name = name } Student.prototype = inherit(Person.prototype) var lilei = new Student('lilei') lilei.sleep()
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
方法一
Array.prototype.duplicator = function(){ return this.concat(this) }
函數也是對象,所以考慮將部分計算結果用鍵值對方式緩存到該函數對象上,下次直接查找該計算的鍵值。
根據一個判斷結果的true和false的不一樣而獲得兩種不一樣的返回值。
略。
好處是使JS在嚴格模式下運行,減小bug。壞處是有些對象使用時會報錯,如arguments.callee等。
函數返回自身,供鏈式調用
$(ele).click().show().animate().hide()
一句話解釋:能夠隨時調用一個異步函數的返回值。
返回對jQuery引用對象形成「破壞性」操做以前的DOM節點。
能夠選擇掛在jQuery對象下面,好處是能夠減小使用全局變量。
// 1. dom ready $(function(){ }) // 2. selector $('a.close-btn') // 3. create node $('<div />') // 4. wrapp nodeList $(document.getElementsByTagName('div'))
.queue()
方法的使用。
.get()
返回的是原生DOM節點,.get()
與[]
返回的是原生DOM節點,.get()
不傳參數還能夠返回包裹的原生數組對象。參考連接
.eq()
返回的是jQuery對象。參考連接
.on()
,將上面三者的優勢全盤接收。.bind()
方法用於綁定事件,事件綁定在該節點上。該方法還能用來綁定自定義事件。.live()
方法還能用於給未來添加到頁面裏的節點也能綁定事件。事件綁定在document上。.delegate()
方法使用了事件委託機制,也達到了.live()
的效果。事件綁定在了節點的父節點上。.on()
方法改造了.delegate()
使用方法,還將.bind()
的綁定自定義事件的功能收入囊中。$.fn是jQuery對象的原型縮寫,擴展$.fn能夠爲全部jQuery對象添加原型方法。
$(".foo div#bar:eq(0)")
$('.foo').find('#bar').first() // $('#bar')不就是想要的嗎?
~~3.14
答案:3
"i'm a lasagna hog".split("").reverse().join("");
答案:"goh angasal a m'i"
( window.foo || ( window.foo = "bar" ) );
答案:"bar" 只有 window.foo 爲假時的纔是上面答案,不然就是它自己的值。
var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar);
答案: "Hello World" 和 ReferenceError: bar is not defined
var foo = []; foo.push(1); foo.push(2);
答案:2
var foo = {}; foo.bar = 'hello';
答案: undefined
沒有。
Google Developer Tools
Github
IE的各類bug。