關於js中的幾個小問題。

2021-09-09 01:36:22 字數 1189 閱讀 2830

問題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

這樣好像看不出來什麼太大的關係,但是在函式中就會出現很大的問題。

function

fn()

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傳遞》 || < .....

function

fn(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 應該和 是一樣的,所以兩...

關於面試的幾個小問題

回答樣本 如果是工作需要我會義不容辭加班,我現在單身,沒有任何家庭負擔,可以全身心的投入工作。但同時,我也會提高工作效率,減少不必要的加班。回答樣本一 我對工資沒有硬性要求,我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。回答樣本二 我受過系統的軟...