最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

了解javascript中變量及函數(shù)的提升

 更新時(shí)間:2019年05月27日 12:01:44   作者:可可西里的驕傲  
這篇文章主要介紹了關(guān)于javascript中變量及函數(shù)的提升,下面和小編來(lái)一起學(xué)習(xí)吧

javascript中變量以及函數(shù)的提升,在我們平時(shí)的項(xiàng)目中其實(shí)還是挺常用的,尤其是大型項(xiàng)目中,不知不覺(jué)就會(huì)順手添加一些變量,而有時(shí)候自己的不小心就會(huì)釀成一些不必要錯(cuò)誤,趁有時(shí)間整理一下自己對(duì)于js中變量及函數(shù)提升的理解。

首先,看一個(gè)題目:

console.log(a); // undefined
var a = 1;
console.log(a); // 1
console.log(b());
function b(){return 2;} // 2
console.log(c) //報(bào)錯(cuò)
let c = 4;
console.log(d()) // 報(bào)錯(cuò) 
var d = function(){return 3;} // 報(bào)錯(cuò)
(function(){
var m = n = 1;
})()
console.log(m) //報(bào)錯(cuò)
console.log(n) // 1

上面的實(shí)例對(duì)于javascript變量及函數(shù)提升的可謂是淋漓盡致...

一、javascript 變量的提升

-函數(shù)及變量的聲明都將被提升到函數(shù)的最頂部

-變量可以在使用后聲明,也就是變量可以先使用再聲明

敲黑板,劃重點(diǎn),是變量的聲明,聲明,聲明,當(dāng)變量或函數(shù)已經(jīng)初始化之后,就不會(huì)提升到函數(shù)的最頂部。這里上面的變量a已經(jīng)初始化了,所以第一個(gè)console取不到變量a得值,為undefined;

注意:變量的提升只會(huì)提升到當(dāng)前作用域下

二、javascript函數(shù)的提升

而函數(shù)b僅僅是先聲明了一個(gè)函數(shù)方法,函數(shù)c是函數(shù)表達(dá)式無(wú)法提升,所以在嚴(yán)格模式下b=2;d報(bào)錯(cuò)

對(duì)于m,n,這里就涉及到j(luò)avascript作用域的問(wèn)題

首先,var m = n = 1的執(zhí)行順序是什么?并不是我們大多數(shù)人心中所想的連續(xù)賦值,javascript的賦值是從右向左的,而是 n=1;var m = n;很好,一目了然,在函數(shù)作用域內(nèi)的變量m=n,n是全局變量,最后嚴(yán)格模式下輸出結(jié)果,n=1,m報(bào)錯(cuò);

三、關(guān)于es6兩個(gè)關(guān)鍵字——let和const

let 聲明的變量只在 let 命令所在的代碼塊內(nèi)有效,不存在變量的提升

const 聲明一個(gè)只讀的常量,一旦聲明,常量的值就不能改變。一旦聲明必須初始化,否則就會(huì)報(bào)錯(cuò)

來(lái)個(gè)對(duì)比很明顯的栗子(完美的體現(xiàn)出let命令只在代碼塊內(nèi)有效的意思):

{
let test = 2;
var web = 'font';
}
console.log(test); // 報(bào)錯(cuò)
console.log(web); // font

再次回到上面的題目,c就是報(bào)錯(cuò)的

ES6 明確規(guī)定,代碼塊內(nèi)如果存在 let 或者 const,代碼塊會(huì)對(duì)這些命令聲明的變量從塊的開始就形成一個(gè)封閉作用域。代碼塊內(nèi),在聲明變量 PI 之前使用它會(huì)報(bào)錯(cuò)。

var PI = "a";
if(true){
console.log(PI); // 報(bào)錯(cuò),即使函數(shù)外面全局聲明了PI,但在代碼塊內(nèi)還是會(huì)報(bào)錯(cuò)
const PI = "3.1415926";
}

以上,就是關(guān)于javascript中變量提升的理解。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • nodejs服務(wù)搭建教程 nodejs訪問(wèn)本地站點(diǎn)文件

    nodejs服務(wù)搭建教程 nodejs訪問(wèn)本地站點(diǎn)文件

    這篇文章主要為大家詳細(xì)介紹了nodejs服務(wù)搭建教程,訪問(wèn)本地站點(diǎn)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Node.js API詳解之 repl模塊用法實(shí)例分析

    Node.js API詳解之 repl模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 repl模塊用法,結(jié)合實(shí)例形式分析了Node.js API中repl模塊基本功能、函數(shù)、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    從Node.js事件觸發(fā)器到Vue自定義事件的深入講解

    這篇文章主要給大家介紹了關(guān)于從Node.js事件觸發(fā)器到Vue自定義事件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 詳解NodeJS模塊化

    詳解NodeJS模塊化

    簡(jiǎn)單的說(shuō)Node.js就是運(yùn)行在服務(wù)端的JavaScript。Node.js是一個(gè)基于Chrome JavaScript運(yùn)行時(shí)建立的一個(gè)平臺(tái)。Node.js是一個(gè)事件驅(qū)動(dòng)I/O服務(wù)端JavaScript環(huán)境,基于Google的V8引擎,V8引擎執(zhí)行Javascript的速度非???,性能非常好
    2021-06-06
  • npm國(guó)內(nèi)鏡像 安裝失敗的幾種解決方案

    npm國(guó)內(nèi)鏡像 安裝失敗的幾種解決方案

    這篇文章主要給大家總結(jié)了npm國(guó)內(nèi)鏡像npm安裝失敗的幾種解決方案,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下來(lái)一起看看吧。
    2017-06-06
  • socket.io與pm2(cluster)集群搭配的解決方案

    socket.io與pm2(cluster)集群搭配的解決方案

    這篇文章主要給大家介紹了關(guān)于socket.io與pm2(cluster)集群搭配的解決方案,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)看看吧。
    2017-06-06
  • npm的lock機(jī)制解析

    npm的lock機(jī)制解析

    這篇文章主要介紹了npm的lock機(jī)制解析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 使用Typescript和ES模塊發(fā)布Node模塊的方法

    使用Typescript和ES模塊發(fā)布Node模塊的方法

    這篇文章主要介紹了使用Typescript和ES模塊發(fā)布Node模塊的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例

    nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例

    這篇文章主要介紹了nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式分析了nodejs連接及查詢mysql數(shù)據(jù)的相關(guān)操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理實(shí)例

    NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理實(shí)例

    本篇文章主要介紹了NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05

最新評(píng)論

靖西县| 龙门县| 新昌县| 尚义县| 绥中县| 峨眉山市| 和政县| 刚察县| 永寿县| 曲松县| 乌拉特后旗| 晋中市| 客服| 滨海县| 迭部县| 龙游县| 旺苍县| 板桥市| 武夷山市| 台中县| 青河县| 石狮市| 天门市| 台中市| 尚志市| 融水| 玉树县| 罗甸县| 望都县| 沁水县| 潼关县| 阳谷县| 武冈市| 千阳县| 合川市| 阿尔山市| 永嘉县| 肥乡县| 资中县| 开远市| 明溪县|