摘要:大家好,我從今天開(kāi)始就會(huì)正式講的語(yǔ)法方面。變量中的變量一般使用來(lái)聲明的不在本教程討論范圍內(nèi),可以用來(lái)定義任何種類的變量,如果只對(duì)變量進(jìn)行了定義而沒(méi)有賦值,這樣變量會(huì)默認(rèn)為。
大家好,我從今天開(kāi)始就會(huì)正式講javascript的語(yǔ)法方面。
變量
js中的變量一般使用var來(lái)聲明(es6的let不在本教程討論范圍內(nèi)),可以用來(lái)定義任何種類的變量,如果只對(duì)變量進(jìn)行了定義而沒(méi)有賦值,這樣變量會(huì)默認(rèn)為undefined。 var a=100; var b="hello,world"; var c=true;變量提升
在js中,用var定義的變量會(huì)出現(xiàn)提升的效果,變量一般會(huì)提升到所在作用域的最頂部,簡(jiǎn)單來(lái)說(shuō)就是,如果變量在函數(shù)中,就會(huì)提升到函數(shù)最頂部,如果在全局作用域(window)中,就會(huì)提升到所有代碼的最頂部。 這里給一個(gè)例子: console.log(a); var a=100; //輸出結(jié)果為undefined
這里實(shí)際上真正的代碼是:
var a; console.log(a); a=100;
因?yàn)閍提升到頂部后未被賦值,所以最后會(huì)輸出undefined,而且親測(cè)嚴(yán)格模式下變量提升不會(huì)受到影響。
(提升:在js中多次聲明一個(gè)變量,只有最后一次聲明有效)
任何一對(duì)花括號(hào)中的語(yǔ)句集都屬于一個(gè)塊,在這之中定義的所有變量在代碼塊外都是不可見(jiàn)的,我們稱之為塊級(jí)作用域
在java和c等語(yǔ)言中,塊級(jí)作用域的效果很明顯,比如下面這段代碼:
#includevoid main() { int i=2; i--; if(i) { int j=3; } printf("%d/n",j); }
運(yùn)行這段代碼,會(huì)出現(xiàn)錯(cuò)誤??梢钥吹?,C語(yǔ)言擁有塊級(jí)作用域,因?yàn)閖是在if的語(yǔ)句塊中定義的,因此,它在塊外是無(wú)法訪問(wèn)的。
但是在js中就不是這樣了:
for(var i=0;i<3;i++){} console.log(i); //輸出3
所以在js里面并沒(méi)有塊級(jí)作用域,它只有函數(shù)作用域,在函數(shù)內(nèi)部用var定義的變量不能被外部訪問(wèn)到,因?yàn)楹瘮?shù)調(diào)用結(jié)束后,變量會(huì)被自動(dòng)銷毀。
(提示:在函數(shù)內(nèi)部不用var直接聲明的變量會(huì)默認(rèn)為全局變量,比如:test=100;這個(gè)test在函數(shù)外部依然能被訪問(wèn)到,因?yàn)槟J(rèn)為全局變量,但是在嚴(yán)格模式下這樣聲明一個(gè)變量會(huì)出錯(cuò))
那么如何實(shí)現(xiàn)塊級(jí)作用域呢?
在js中有一種立即執(zhí)行的函數(shù),在里面定義的變量一般不會(huì)泄露到外界,由于這里還沒(méi)有講函數(shù),所以我只稍微提一下,以后再好好講。
我只是把js每個(gè)部分的重點(diǎn)理清一下,具體的還是需要大家自己去看,比如關(guān)鍵字,注釋,區(qū)分大小寫等等,這套教程只適合在零碎時(shí)間去看,如果大家能有所收獲,我就很滿足啦。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80347.html
摘要:大家好,我從今天開(kāi)始就會(huì)正式講的語(yǔ)法方面。變量中的變量一般使用來(lái)聲明的不在本教程討論范圍內(nèi),可以用來(lái)定義任何種類的變量,如果只對(duì)變量進(jìn)行了定義而沒(méi)有賦值,這樣變量會(huì)默認(rèn)為。 大家好,我從今天開(kāi)始就會(huì)正式講javascript的語(yǔ)法方面。變量 js中的變量一般使用var來(lái)聲明(es6的let不在本教程討論范圍內(nèi)),可以用來(lái)定義任何種類的變量,如果只對(duì)變量進(jìn)行了定義而沒(méi)有賦值,這樣變量會(huì)默...
摘要:上一篇學(xué)習(xí)下一代語(yǔ)法一,我們學(xué)習(xí)了關(guān)于塊作用域變量或常量聲明和語(yǔ)法新的字符串拼接語(yǔ)法模版字面量數(shù)組元素或?qū)ο笤氐慕鈽?gòu)賦值和對(duì)象字面量簡(jiǎn)寫的相關(guān)知識(shí)。這便是擴(kuò)展運(yùn)算符的用途之一。 本文同步 帶你入門 JavaScript ES6 (二),轉(zhuǎn)載請(qǐng)注明出處。 上一篇學(xué)習(xí)下一代 JavaScript 語(yǔ)法: ES6 (一),我們學(xué)習(xí)了關(guān)于塊作用域變量或常量聲明 let 和 const 語(yǔ)法、...
摘要:個(gè)人前端文章整理從最開(kāi)始萌生寫文章的想法,到著手開(kāi)始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會(huì)繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開(kāi)始萌生寫文章的想法,到著手...
摘要:入門筆記二對(duì)字符串操作的擴(kuò)展傳統(tǒng)上,只有方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。用于頭部補(bǔ)全,用于尾部補(bǔ)全。模板字符串中嵌入變量,需要將變量名寫在之中。 ES6入門筆記(二) ES6對(duì)字符串操作的擴(kuò)展 傳統(tǒng)上,JavaScript只有indexOf方法,可以用來(lái)確定一個(gè)字符串是否包含在另一個(gè)字符串中。ES6又提供了三種新方法...
閱讀 797·2019-08-30 15:55
閱讀 1543·2019-08-30 15:52
閱讀 2703·2019-08-30 15:44
閱讀 2125·2019-08-30 11:14
閱讀 2633·2019-08-29 13:59
閱讀 1835·2019-08-29 13:45
閱讀 1022·2019-08-29 13:21
閱讀 3384·2019-08-26 13:31