js變量提升_一道JS變量提升題

d68ed464eb678bf655a8f7d1d1dc2fa7.png
    var a = 0;if(true){a = 1;function a(){};a = 21;console.log(a);}console.log(a);// 21 1 

當前上下文代碼執行之前,會將帶var/function的進行聲明/定義。

當遇到“{}”時,新版瀏覽器和老版瀏覽器的處理不一致。

老版瀏覽器(IE10以下)忽略“{}”的影響,繼續聲明/定義,不存在塊級作用域

新版瀏覽器中“{}”里的function只聲明不定義,“{}”若出現funciton/let/const關鍵字,會創建一個塊級上下文


本題在全局變量提升階段會聲明一個變量a,在塊級作用域內的function a同樣會聲明,但是不定義。 代碼繼續執行

    var a = 0;

在全局下給a賦值0。

    if(true){a = 1;function a(){};a = 21;console.log(a);}

代碼執行到條件判斷時,創建一個塊級作用域,在塊級作用域內進行變量提升,聲明并且定義funciton a

        a = 1;

塊級作用域內給a賦值為1。

繼續執行到函數定義的地方為了兼容ES3和ES6瀏覽器會做這樣一步操作:

把代碼之前所有對a的操作映射到全局

于時之前對塊級作用域內變量a賦值為1的操作也會映射到全局的變量a,所以全局的a變成了1。所以最后控制臺打印的是結果是21,和1,因為全局的a映射了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Adaboost的幾個人臉檢測網站

【1】基礎學習筆記之opencv(1):opencv中facedetect例子淺析 http://www.cnblogs.com/tornadomeet/archive/2012/03/22/2411318.html【2】OpenCV學習筆記(二十七)——基于級聯分類器的目標檢測objdect http://blog.csdn.net/yang_xian521/arti…

Caffe訓練過程:test_iter test_interval等概念

轉載自http://blog.csdn.net/iamzhangzhuping/article/details/49993899 先上一張圖,大家很熟悉的一張圖。 首先說明一個概念:在caffe中的一次迭代iteration指的是一個batch,而不是一張圖片。 下面主要說下2個概念: test_ite…

R的獲取和安裝

R的獲取和安裝 一、下載 R可以在CRAN(Comprehensive r archive network)http://cran.r-project.org上免費下載,可供選擇的有Linux、Mac OS X和windows對應的二進制文件; 我這里選擇的是windows版本。打開如下頁面: bas…

Bitmap recycle()

Bitmap調用recycle? When?Bitmap有一個recycle方法。含義很easy,恢復Bitmap空間。 Q 1: Bitmap有調用recycle方法的必要性? A: 嵌入式系統總是格外注重空間的問題,不小心的話就會有OOM。可是應用層使用java的android平臺有其天然的優勢【ja…

擴展歐幾里得算法求逆元_從輾轉相除法到求逆元,數論算法初體驗

今天是算法和數據結構專題的第22篇文章,我們一起來聊聊輾轉相除法。輾轉相除法又名歐幾里得算法,是求最大公約數的一種算法,英文縮寫是gcd。所以如果你在大牛的代碼或者是書上看到gcd,要注意,這不是某某黨,…

[翻譯] Fast Image Cache

https://github.com/path/FastImageCache Fast Image Cache is an efficient, persistent, and—above all—fast way to store and retrieve images in your iOS application. Part of any good iOS applications user experience is fast, smooth scrolling, and Fast Image …

centos 安裝 MatConvNet (gpu)

1. 安裝準備 matlab2017a ,參考:《centos 安裝matlab2017a(無root權限)》 GCC 4.8(支持c11) 鍵入:sudo yum install gcc gcc-c (建議sudo裝) 至少CUDA 7.5,(本人選擇cuda8.0&#xff…

php練習 租房子

題目要求 1.封裝類 <?php class DBDA {public $fuwuqi"localhost"; //服務器地址public $yonghuming"root";//用戶名public $mima"";//密碼 public $dbconnect;//連接對象//操作數據庫的方法//$sql代表需要執行的SQL語句//$type代表SQL語…

【SHARE】WEB前端學習資料

參考資料&#xff1a;https://github.com/karlhorky/learn-to-program學習網站&#xff1a;http://www.codecademy.com/learn https://www.codeschool.com/ 制作網站&#xff1a;https://webmaker.org/zh-CN/explore JavaScript2015&#xff1a;https://esdiscuss.org/topic/ja…

python軟件安裝和使用方法_aws cli的安裝及使用(內含python的安裝方法)

liunx環境(使用bundled installer)&#xff1a;1.wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip //下載bundled installer2.unzip awscli-bundle.zip3.sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws如果你沒有sudo權限或者是你想在當…

centos 安裝boost(caffe需要)

安裝 由于安裝caffe&#xff0c;要求boost的版本在1.55以上&#xff0c;而服務器上的剛好是1.54,所以進行了重裝。 參考&#xff1a;《CentOS 7下編譯安裝Boost_1_57_0 》 不過由于pycaffe需要boost.python,因此需要在./b2時修改為./b2 –stage debug 才可以。而不能去掉py…

JAVA正則表達式介紹和使用

本文引用自 http://www.cnblogs.com/android-html5/archive/2012/06/02/2533924.html 技術博客 1.Java中在某個字符串中查詢某個字符或者某個子字串 Java代碼 String s "Shang Hai Hong Qiao Fei Ji Chang";    String regEx "a|F"; //表示a或F Pat…

集合框架中的接口及其實現類

Collection&#xff1a;集合層次中的根接口&#xff0c;JDK沒有提供這個接口直接地實現類。Set&#xff1a;不能包含重復的元素。SortedSet是一個按照升序排列元素的Set。List&#xff1a;是一個有序的集合&#xff0c;可以包含重復的元素。提供了按索引訪問的方式。Map&#x…

C# 多線程 Parallel.For 和 For 誰的效率高?那么 Parallel.ForEach 和 ForEach 呢?

還是那句話&#xff1a;十年河東&#xff0c;十年河西&#xff0c;莫欺少年窮。 今天和大家探討一個問題&#xff1a;Parallel.For 和 For 誰的效率高呢&#xff1f; 從CPU使用方面而言&#xff0c;Parallel.For 屬于多線程范疇&#xff0c;可以開辟多個線程使用CPU內核&#x…

cuda、cudnn相關問題鏈接

1. cuda&#xff0c;cudnn安裝 <caffe安裝系列——安裝cuda和cudnn> 2. 查看已有的cuda等版本 cuda 版本 cat /usr/local/cuda/version.txtcudnn 版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 23. cudnn的安裝&#xff0c;路徑和版本問題 http://…

bigdecimal 小于等于0_圖解小于 K 的兩數之和

點擊藍色“五分鐘學算法”關注我喲加個“星標”&#xff0c;天天中午 12:15&#xff0c;一起學算法作者 | P.yh來源 | 五分鐘學算法題目描述 題目來源于 LeetCode 上第 1099 號問題&#xff1a;小于 K 的兩數之和。給你一個整數數組 A 和一個整數 K&#xff0c;請在該數組中找出…

用STS創建Maven的Web項目轉

右鍵New——>other——》Maven——》Maven Project 彈出框中點擊Next&#xff0c;在Filter中寫上&#xff1a;webapp. 然后在下面的框中選擇org.apache.maven.archetypes&#xff0c;點擊Next 在新彈出的窗口中寫上Group Id和Artifact Id&#xff0c;Finish即可成功。 創建完…

img超出div width時, jQuery動態改變圖片顯示大小

參考&#xff1a; 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archive/2012/02/23/2364292.html轉載于:https://www.cnblogs.com/carlo/p/4584008.html

《TOGAF 9.1IT企業架構》什么是企業IT架構

2. 什么是企業IT架構 現在有越來越多的企業IT架構定義。在這一章&#xff0c;你會學習到一些企業IT架構的方法&#xff0c;我們會給你深入解釋一種實用的方法&#xff0c;這種方法視企業架構師為CIO(譯注&#xff1a;CIO首席信息官&#xff0c;是負責一個公司信息技術和系統所有…

pdf 深入理解kotlin協程_Kotlin協程實現原理:掛起與恢復

今天我們來聊聊Kotlin的協程Coroutine。如果你還沒有接觸過協程&#xff0c;推薦你先閱讀這篇入門級文章What? 你還不知道Kotlin Coroutine?如果你已經接觸過協程&#xff0c;但對協程的原理存在疑惑&#xff0c;那么在閱讀本篇文章之前推薦你先閱讀下面的文章&#xff0c;這…