国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JavaScript變量提升和嚴格模式實例分析

2024-05-06 16:47:54
字體:
供稿:網(wǎng)友

本文實例講述了JavaScript變量提升和嚴格模式。分享給大家供大家參考,具體如下:

1.什么是變量提升

所謂的變量提升指的是:函數(shù)聲明和變量聲明總是會被解釋器悄悄地被"提升"到方法體(作用域)的最頂部。

下面我們通過一個例子來詳細說明一下。

//變量聲明在使用之前var x;console.log(x);//undefined//變量聲明在使用之后console.log(y);//undefinedvar y;//上面的式子可以寫成下面的樣子/*變量提升:把x,y提升到頂部var x;var y;console.log(x);console.log(y);*/

從上面這個例子我們可以看到:

①變量的使用有兩種形式,先聲明再使用或者先使用后聲明;

②無論是哪一種形式都不影響變量的使用,這是因為有變量提升的存在,每一個你定義的變量都會被提升到頂部,也就是函數(shù)最開始的部分,這就變成了你在使用變量時其實都已經(jīng)聲明變量了。

下面我舉一個經(jīng)典的例子來更好地理解一下。

//經(jīng)典案例:window表示全局,判斷條件(變量a是否有在全局下)是在變量a聲明之前if(a in window){  var a;  console.log('a in window');}else{console.log('a not in window');}//a in window//相當(dāng)于:/*var a; //a被提升到頂部if(a in window){  console.log('a in window');}else{console.log('a not in window');}*/

這是變量提升的一個很好的例子,可以看到打印出來的結(jié)果表明,在我們使用a之前,聲明變量a就被提升到頂部。

但是,要注意的是JavaScript 只有聲明的變量會提升,初始化的不會。

console.log(c);//undefinedvar c = 1; //初始化/*var c;console.log(c);c = 1;*/var d;//聲明dd = 1;//初始化console.log(d);//1

上面的c打印結(jié)果為undefined,這是因為提升的只有聲明變量var c,而初始化的c=1沒有提升而在使用之后。

為了避免上面出現(xiàn)的變量提升的問題,通常我們在每個作用域開始前聲明我們要使用的變量。

2.嚴格模式

嚴格模式的寫法就是在代碼編寫之前加上"use strict",嚴格模式要求你不能使用未聲明的變量,否則會報錯。

例如:

"use strict"; //嚴格模式m =1;console.log(m);//m is not defined//在嚴格模式下,因為m未被聲明就被使用或者初始化則會報錯var n = 1;console.log(n);//1

但是在沒有使用嚴格模式的時候:

m =1;console.log(m);//1//在非嚴格模式下,同樣這樣寫就不會報錯

雖然還是沒有聲明變量m但還是可以使用的。

所以,還是建議大家盡可能得使用嚴格模式來編寫javascript代碼,以消除Javascript語法的一些不合理、不嚴謹之處,讓自己成為一個更優(yōu)秀的程序員。

希望本文所述對大家JavaScript程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 甘德县| 沭阳县| 读书| 肇源县| 辽源市| 张北县| 建阳市| 常州市| 平乡县| 伊川县| 电白县| 嘉祥县| 习水县| 丽水市| 五家渠市| 榕江县| 沙田区| 嘉黎县| 宁陵县| 涿鹿县| 淳化县| 达拉特旗| 阿鲁科尔沁旗| 和田市| 夏河县| 台湾省| 灵寿县| 买车| 宜丰县| 卢氏县| 昭觉县| 昌黎县| 江华| 句容市| 东台市| 广宗县| 左贡县| 广饶县| 武山县| 通城县| 鄂尔多斯市|