摘要:變量提升的變量提升往往是由內部變量和全局變量命名相同引起的。例二先打印出,然后打印本例中沒有,這是中的隱式全局變量,可以通過和進行訪問。因為在函數內部,所以相當于在函數內部也定義了一個內部變量。
變量提升:javascript的變量提升往往是由內部變量和全局變量命名相同引起的。
例一:
var v="Hello JS"; (function(){ alert(v); var v="I love JS"; })()
alert出來的是undefined,因為在函數內部定義一個和外部變量名稱相同的變量時,變量的聲明會提升至第一句,賦值則不會變,所以上述語句其實是這樣執行的:
var v="Hello JS"; (function(){ var v; alert(v); v="I love JS"; })()
本例先定義的是全局變量V,在函數里面又定義了內部變量V,alert(v)執行的時候,實際是先在函數內創建變量v,然后執行。
例二:
(function(){ a = 10; alert(window.a); var a = 5; alert(a); })();
先打印出undefined,然后打印5
本例中a=10,沒有var,這是js中的隱式全局變量,可以通過this 和 window進行訪問。因為在函數內部,所以相當于在函數內部也定義了一個內部變量var a=10。內部變量和全局變量重名,內部變量把全局變量覆蓋,這樣內部變量值是10,外部變量變成undefined,這樣通過window去訪問,便是undefined。
例二中的執行順序相當于:
var a = undefined; (function(){ var a ; a = 10 ; alert(window.a); a = 5; alert(a); })();
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80466.html
摘要:什么是函數作用域下的變量提升和函數提升函數作用域中也存在變量提升和函數提升,這個和全局作用域下的情況是一模一樣的,就是把作用域想成是全局的就可以了。 在js中有一部分比較難以理解,卻也是在筆試過程中很容易考的,那就是變量提升和函數提升的問題,這篇文章我會就變量提升和函數提升的問題拓展一下有關js函數的知識點,包括作用域的問題,后面還會有一些小練習來判斷自己是否真的搞懂了。 作用域 在j...
摘要:所謂變量提升,提升就是為了事先聲明變量。變量提升之后,但其賦值還是留在原本的位置等運行到了之后動態賦值,而函數提升之后直接相當于在代碼里抽空了。搞明白這個例子也就搞懂了作用域中變量和函數是怎么提升的。 問題 showImg(https://segmentfault.com/img/bVJ614?w=222&h=165); 在這個例子中它應該輸出什么?輸出的結果是6。 showImg(h...
摘要:變量提升什么是變量提升在函數體內聲明的變量,無論你是在函數的最底端還是中間聲明的,那么都會把該變量的聲明提升到函數的最頂端相當于第一行,但是只是提升變量的聲明,不會賦值。 1、變量提升 什么是變量提升?在函數體內聲明的變量,無論你是在函數的最底端還是中間聲明的,那么都會把該變量的聲明提升到函數的最頂端(相當于第一行),但是只是提升變量的聲明,不會賦值。 var num = 10; fu...
摘要:但是碰到聲明提升,這種想法就會被打破。聲明一個函數進行相應的操作,會得到函數聲明提升的結果。由此可以發現變量和函數的聲明都會被提升在其他代碼的前面執行。一個普通塊內部的函數聲明通常會被提升到所在的作用域的頂部。的創建初始化和賦值均會被提升。 Javascript聲明提升 在分析聲明提升之前,我認為有必要知道的兩點: 一、引擎查詢變量的兩種方式 引擎查詢變量的方式可以分為LHS和RHS兩...
摘要:不同的是函數體并不會再被提升至函數作用域頭部,而僅會被提升到塊級作用域頭部避免全局變量在計算機編程中,全局變量指的是在所有作用域中都能訪問的變量。 ES6 變量作用域與提升:變量的生命周期詳解從屬于筆者的現代 JavaScript 開發:語法基礎與實踐技巧系列文章。本文詳細討論了 JavaScript 中作用域、執行上下文、不同作用域下變量提升與函數提升的表現、頂層對象以及如何避免創建...
閱讀 3762·2021-09-22 15:17
閱讀 1946·2021-09-22 14:59
閱讀 2346·2020-12-03 17:00
閱讀 3209·2019-08-30 15:55
閱讀 482·2019-08-30 11:23
閱讀 3487·2019-08-29 13:56
閱讀 518·2019-08-29 12:54
閱讀 2257·2019-08-29 12:49