問題1:
使用連續賦值後面的變數會成為全域性物件的乙個屬性,並且這個屬性可以通過delete刪除。
原因:賦值語句是從右往左執行的,我們將10賦值給了c,但是c此時還宣告,接著把c的返回值賦值給了b,但是b也還沒有宣告,最後賦值給了a此時a有宣告,所以a就是區域性變數。
var a = b = c = 10;console.log(
delete a); //
false
console.log(delete b); //
true
console.log(delete c); //
true
這樣好像看不出來什麼太大的關係,但是在函式中就會出現很大的問題。
functionfn()
fn();
console.log(b);
//10
console.log(c); //
10console.log(a); //
a is not defined
此時b和c在全域性範圍都能夠訪問,因為b和c成了全域性物件window的乙個屬性。
問題2:
如果把陣列length事先儲存到乙個變數中,需要注意的是不管這個陣列的長度在這之後是否有改動過,這個變數儲存的陣列的值依然是事先獲取到的長度。
var arr = [1,2,3],i = 0,
len =arr.length;
arr.length = 2;
console.log(len); //3
console.log(arr.length); //
2
所以如果在之後有改動這個陣列的長度的時候需要重新獲取一下,以免出錯。
問題3:
在js中不能按理說是不能把比較符當做函式的引數傳遞並且執行的,但是很多時候我們確實需要這樣的乙個功能,這兩天發現乙個方法可以實現這個功能。通過eval傳遞》 || < .....
functionfn(a)
}fn(">") //
1
實現的原理是因為,eval方法會把字串當做**來執行,至於使用的場景,由你自己想象。
關於js中 的小問題
先看下面兩個 為什麼第一行正常 編譯 執行 但第二行給出錯誤?注意是 referenceerror。0 uncaught referenceerror invalid left hand side expression in postfix operation 第一想法 0 應該和 是一樣的,所以兩...
關於js中 的小問題
先看下面兩個 為什麼第一行正常 編譯 執行 但第二行給出錯誤?注意是 referenceerror。0 uncaught referenceerror invalid left hand side expression in postfix operation 第一想法 0 應該和 是一樣的,所以兩...
關於面試的幾個小問題
回答樣本 如果是工作需要我會義不容辭加班,我現在單身,沒有任何家庭負擔,可以全身心的投入工作。但同時,我也會提高工作效率,減少不必要的加班。回答樣本一 我對工資沒有硬性要求,我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。回答樣本二 我受過系統的軟...