日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js中的var详解

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js中的var详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

var是js的一個關鍵字,它是用來聲明變量的。

聲明一個變量有兩種方式:

第一種:var num=1。如果在方法中聲明,則為局部變量;如果在全局中聲明,則為全局變量

第二種:num=1。事實上這是對屬性進行賦值操作。首先,它會嘗試在當前作用域鏈(如果在方法中聲明,則當前作用域代表全局作用域和方法局部作用域)中解析num,如果在任何當前作用域鏈中找到num,則會對num屬性進行賦值,如果沒有找到num,他會在全局對象(即當前作用域鏈的最頂層對象,如window對象)中創造num屬性并賦值

注意!它并不是聲明了一個全局變量,而是創建了一個全局對象的屬性

由于變量聲明自帶不可刪除屬性,比較var num=1跟num=1,前者是變量聲明,帶不可刪除屬性,因此無法被刪除;后者為全局變量的一個屬性,因此可以從全局變量中刪除。


變量提升


JavaScript引擎的工作方式是,先解析代碼,獲取所有被聲明的變量,然后再一行一行的運行,這造成的結果,就是所有的變量的聲明語句,都會被提升到代碼的頭部,這就叫做變量提升

示例:

? ? console.log(a);

? ? var a=1;

? ? 以上的語句不會報錯,只是提示undefined。實際的運行過程:

? ? var a;

? ? console.log(a);

? ? a=1;表示變量a已聲明,但還未賦值。但是變量提升只對var命令聲明的變量有效,如果一個變量不是var變量聲明的,就不會發生變量提升,例如以下實例:

? ? console.log(aa);

? ? aa=1;以上代碼將會報錯aa is not defined

與普通變量一樣,js中的function也可看做變量,也存在變量提升的情況:

? ? a();

function a(){

? ? console.log(1);

}

表面上,上面的代碼好像在聲明之前就調用了函數a。但是實際上,由于變量提升,函數a定義部分被提升到了代碼頭部,也就是在調用之前已經聲明了。但是,如果采用賦值語句定義函數,JavaScript就會報錯:

a();

var a=function(){

console.log(1);

}//會報 a is not a function

因為實際運行過程:

var a;

a();

a=function(){

? ? console.log(1);

}//這時候a是個變量,并非function

總結

以上是生活随笔為你收集整理的js中的var详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。