亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

關(guān)于JavaScript變量提升方面需要注意的地方

youkede / 1736人閱讀

摘要:與大家分享一下本文適合對(duì)于變量提升存疑的小伙伴們查看。下列代碼輸出結(jié)果正確的是毫無(wú)疑問(wèn)這道題涉及到了變量提升。就是答案的第一項(xiàng)對(duì)于那些不太熟悉變量提升的人們很容易就會(huì)選錯(cuò),畢竟函數(shù)外部定義一個(gè)變量,函數(shù)內(nèi)輸出值,沒(méi)什么問(wèn)題。

最近看到一道某手機(jī)公司的校招前端筆試題,感覺(jué)很有意思。與大家分享一下
本文適合對(duì)于變量提升存疑的小伙伴們查看。

下列代碼輸出結(jié)果正確的是:()

var val = 12;
function fun1(){
   console. log(val);
   var val = 20;
   console.log(val);
}
fun1();

A.12 20

B.12 12

C.undefined 20

D.20 undefined

毫無(wú)疑問(wèn)這道題涉及到了變量提升。答案的第二項(xiàng)是20應(yīng)該是沒(méi)有爭(zhēng)議的,相當(dāng)于

var val=20;
console.log(val);

定義一個(gè)變量,再輸出。
就是答案的第一項(xiàng)對(duì)于那些不太熟悉變量提升的人們很容易就會(huì)選錯(cuò),畢竟

 var val = 12;
 function fun1(){
   console.log(val);//12
 }
 fun1();

函數(shù)外部定義一個(gè)變量,函數(shù)內(nèi)輸出值,沒(méi)什么問(wèn)題。
那如果題目是這樣呢:
var val = 12;
function fun1(){

console.log(val);//12
val = 20;
console.log(val);//20

}
fun1();

函數(shù)外部定義一個(gè)變量,函數(shù)內(nèi)部先輸出得12再重新進(jìn)行賦值,再次輸出得20。
那么我們回到一開(kāi)始的題目。
題目是這樣

下列代碼輸出結(jié)果正確的是:()

var val = 12;
function fun1(){
   console. log(val);//undefined
   var val = 20;
   console.log(val);//20
}
fun1();

和上面比,不同的地方在于函數(shù)內(nèi)部輸出過(guò)一次后又重新定義并賦值,雖然只是多了個(gè)val,但結(jié)果就不一樣了,他影響著第一個(gè)val的輸出值。
為什么第一個(gè)輸出值為underfined,
其實(shí)上面的代碼等同于var val = 12;

function fun1(){
   var val;
   console. log(val);//undefined
   val = 20;
   console.log(val);//20
}
fun1();

由于函數(shù)內(nèi)重新定義val,導(dǎo)致變量val被提升到了頂端,但它被賦予的值并沒(méi)有提升,所以第一個(gè)console.log(val)輸出的只是定義過(guò)但沒(méi)有被賦值的val,第二個(gè)console.log輸出的是被賦值20的val。
所以這道題的答案為C。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/103840.html

相關(guān)文章

  • [轉(zhuǎn)載]jQuery插件開(kāi)發(fā)詳細(xì)教程

    摘要:本教程可能不是最精品的,但一定是最細(xì)致的。插件開(kāi)發(fā)下面我們就來(lái)看第二種方式的插件開(kāi)發(fā)。然后我們的插件代碼在這個(gè)方法里面展開(kāi)。 要說(shuō)jQuery 最成功的地方,我認(rèn)為是它的可擴(kuò)展性吸引了眾多開(kāi)發(fā)者為其開(kāi)發(fā)插件,從而建立起了一個(gè)生態(tài)系統(tǒng)。這好比大公司們爭(zhēng)相做平臺(tái)一樣,得平臺(tái)者得天下。蘋(píng)果,微軟,谷歌等巨頭,都有各自的平臺(tái)及生態(tài)圈。 學(xué)會(huì)使用jQuery并不難,因?yàn)樗?jiǎn)單易學(xué),并且相信你接觸...

    kevin 評(píng)論0 收藏0
  • 前端優(yōu)化-Javascript篇(3.標(biāo)識(shí)符查找優(yōu)化)

    摘要:下面我跟大家分享關(guān)于標(biāo)識(shí)符查找方面的優(yōu)化問(wèn)題。這個(gè)變量對(duì)象會(huì)首先被放入作用域鏈中。執(zhí)行上下文也有一個(gè)作用域鏈,這個(gè)作用域鏈就是用來(lái)進(jìn)行變量查找的。當(dāng)執(zhí)行上下文創(chuàng)建時(shí),它的作用域鏈會(huì)用函數(shù)的屬性來(lái)初始化。   前面兩篇文章介紹了Javascript文件在頁(yè)面中位置以及異步加載問(wèn)題對(duì)前端性能的影響。不過(guò)受限于單線(xiàn)程的原因,不管采用哪種方法,只要Javascript進(jìn)行了耗時(shí)的工作,就都會(huì)引...

    KaltZK 評(píng)論0 收藏0
  • [翻譯] JavaScript Scoping and Hoisting

    摘要:對(duì)于新手來(lái)說(shuō)是最令人困惑的部分之一。函數(shù)聲明通過(guò)的形式。很明顯的,語(yǔ)言自身定義和函數(shù)形參已經(jīng)處于作用域頂端。這就意味著,函數(shù)聲明比變量聲明具有更高的優(yōu)先級(jí)。但是這卻不意味著對(duì)這個(gè)名稱(chēng)的賦值無(wú)效,僅僅是聲明的部分會(huì)被忽略而已。 原文鏈接:JavaScript Scoping and Hoisting 你知道下面的JavaScript代碼執(zhí)行后會(huì)alert出什么值嗎? var foo = ...

    FingerLiu 評(píng)論0 收藏0
  • JS筆記四:作用域、變量(函數(shù))提升

    摘要:變量作用域一個(gè)變量的作用域表示這個(gè)變量存在的上下文。在這種情況下,僅僅函數(shù)聲明的函數(shù)體被提升到頂部。雖然我們無(wú)需用來(lái)修飾形式參數(shù),但是形式參數(shù)的確也是變量,并且被自動(dòng)提升到次高的優(yōu)先級(jí)函數(shù)聲明。 關(guān)于作用域,變量提升,函數(shù)提升的個(gè)人理解 參考: 阮一峰的JavaScript參考教程2.7函數(shù)部分 思否上一篇關(guān)于作用域,提升的博客 一篇關(guān)于作用域和提升的個(gè)人博客 MockingBird...

    FuisonDesign 評(píng)論0 收藏0
  • JavaScript函數(shù)(二)

    摘要:目錄函數(shù)的聲明函數(shù)的屬性和方法函數(shù)的作用域閉包知識(shí)點(diǎn)小結(jié)關(guān)于函數(shù),可以從以下個(gè)方面去理解首先,數(shù)據(jù)類(lèi)型上看函數(shù)在中是一種數(shù)據(jù)類(lèi)型,是對(duì)象的一種其次,從功能上看函數(shù)本質(zhì)上是一段反復(fù)調(diào)用的代碼塊最后,從地位上看函數(shù)在中和其他基本數(shù)據(jù)類(lèi)型一樣,可 目錄 1.函數(shù)的聲明 2.函數(shù)的屬性和方法 3.函數(shù)的作用域 4.閉包知識(shí)點(diǎn) 5.小結(jié) 關(guān)于函數(shù),可以從以下3個(gè)方面去理解:首先,數(shù)據(jù)類(lèi)型上看:...

    用戶(hù)84 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

youkede

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<