1,用本身的語言描述出,什麼是對象、類、封裝、聚合、繼承、多態?css
對象,擁有屬性和方法的任何抽象概念。 類,能夠實例化,有共同屬性或方法(行爲)的類似對象,的模板 封裝,提供接口,隱藏接口的實現 聚合,將大功能(對象)拆分紅小功能(小對象)去實現的逆過程。 繼承,子類經過繼承得到父類的方法或屬性 重寫,子類繼承父類的方法,改爲本身的實現。 多態,、對傳遞的參數判斷來執行邏輯,一種多態處理機制
1,在控制檯輸入表達式後,返回undefined緣由:segmentfault
有時可能會看到某個表達式在控制檯中的輸出,結果爲 undefined。爲何這些表達式會輸出 undefined 呢? 控制檯在執行完輸入的表達式後,輸出的該表達式運行結果,若是表達式沒有返回值,undefined,不然返回返回值。
2, css 中顏色表示的兩種方式數組
rgb(0,0,0) 黑色 rgb(255,0,0) 紅色 \#ff0000 紅色 三基色的順序都是 red,green,blue
3, 爲何返回結果不一致,a爲啥不是NaN呢?閉包
參考提問 https://segmentfault.com/q/1010000014772302 var a = 9/0; typeof a; "number" a; Infinity typeof 9/0; NaN
4,類型轉換函數
將數字字符串轉成數字,*1, 轉換失敗NaN 其餘類型轉爲字符串,+"" var s = '100'; s=s*1; typeof s;
5,哪些值雙重取反後,返回false?編碼
「」,undefined, null, 0, NaN, false "0", "false", " " 爲 true
6,null和undefined區別之一url
在轉成布爾值類型時候一致 在轉爲數字類型的數值時,會有區別 Number(null) 0, Number(undefined) NaN 1*null = 0; 1+null = 1; 1*undefined = NaN; 1+undefined = NaN;
7,判斷一個元素是否初始化。code
檢查變量是否存在。 咱們通常不判斷是,判斷不是 在判斷元素是否存在時候,最好使用typeof
if(somevar){ balabal } //若是沒有定義會有警告 if(typeof somevar !=='undefined'){ balabala }
1,函數返回值對象
一個函數只能有一個返回值,若是有多個返回值,使用數組的形式返回。 return 子句,返回值,就是函數的返回值。
2,函數的參數,傳到方法中的究竟是什麼值?繼承
函數聲明時候,會設置函數的參數,若是調用時候沒有傳遞相關的參數值,js默認爲undefined
function sum(a,b){ return a+b; } sum(1); //NaN 少了,默認undefined 多了,忽略多傳的參數。
3, 形參長度和實參長度的區別
arguments.length 是實參的長度,調用函數時候,像函數傳遞了幾個參數的長度. arguments.callee.length = function.length 形參的長度。
function sum(a,b,c){ console.log(arguments.length); return a+b+c; } sum(1,2,3,4,5); 5 sum.length; 3
function sum(a=1,b,c){ console.log(arguments.length); } sum(1,2,3,4,5); 5 sum.length; 爲啥是0? 0????????
4, 預約義函數
parseInt 將接受的任何值,轉成整數類型輸出。失敗,返回NaN。 parseFloat 只支持將輸入值轉換成十進制數,該函數只有一個參數。 isFinite(Infinity) //false 是不是有限的,Infinity無限的。
5, encodeURI 和 encodeURIComponent的區別;
它用於對URL的組成部分進行個別編碼。 後者對整個url進行編碼,包括一些特殊字符。
6,函數聲明和函數表達式
function a() //聲明 var a = function() //函數表達式
7,匿名函數
7.1回調函數 何時執行回調函數?將函數c傳遞給函數A,由函數A來執行函數c就造成回調函數。 示例:將一個函數的返回值傳遞給另外一個函數。
function add(a){ return a+1; } function(arr, callback){ for(var i = 0;i<arr.length;i++){ arr[i] = callback(arr[i]*2); } }
7.2當即執行函數
// 兩種寫法 (function(){})(); (function(){}()) //第二種寫法總是忘記 //優勢:不會產生任何全局變量。
7.3 修改自身的函數
function a (){ alert(1); a= function(){ alert(2); } } //第一次執行和第二次執行就不同了
返回函數的函數
function a (){ alert(1); return function(){ alert(2); } } a()();
複習:閉包返回當前值的緣由, 如何解釋循環閉包打印出來是數組長度?
每一個數組都指向了一個共同的局部變量i,可是閉包不會記錄i的值,只是擁有在相關域建立時候的一個引用,執行的時候,會從所在域逐級尋找最近的i值,for循環結束後,都指向了那個共同的值。