第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

對(duì)聲明提升的一點(diǎn)思考。

標(biāo)簽:
Html/CSS Html5 JavaScript

javascript变量和函数由一个很重要的特性是声明提升。声明提升是什么意思呢?即浏览器在解释js代码之前会有一个预读阶段,将由var声明的变量和函数提升到当前作用域的顶端。举个实际的例子:、

    console.log(bbb); //function bbb() {console.log(aaa);}
    console.log(aaa);//undefined
    count = 0;
    for (i = 0; i < 1000; i ++) {
        count += i;
    }
    var aaa = 0;
    bbb = 20;
    function bbb() {
        console.log(aaa);
    }
    console.log(bbb());//**报错**

为什么会出现这样的情况呢?这就是js在执行代码之前的预读阶段进行了声明提升,提升之后的代码实际上是:

    function bbb() {
        console.log(aaa);
    }
    var i, aaa;
    console.log(bbb);
    console.log(aaa);
    count = 0;
    for ( i= 0; i < 1000; i ++) {
        count += i;
    }
     aaa= 0;
    bbb = 20;
    console.log(bbb());

代码变成了这样,是不是一目了然了。为什么函数在最前面,因为它是js中的一等公民,其他最多是人民。这就是我今天要讲的内容的基础,下面正式进入主题。

在很多时候,声明提升会有用,可是在很多时候会让程序看上去生涩难懂,特别是程序很长时就更是难以预料。解决方法有很多,主流的是采用命名空间和用var方式声明函数。看下面的代码:

    var a = 1;
    var b = 1;
    var aaa = function() {
        var a = b = 2;
    }
    aaa();
    console.log(a);//1
    console.log(b);//2

这里又是怎么回事呢?因为使用var a = b = 2;这种方式声明的变量,第一个由于有var所以是局部变量,第二个没有var所以是全局变量(是不是觉得太不机智了)。这里就引出了下一个问题,请看下面的代码:

 var a = 1;
    var b = 1;
   var aaa = function() {
       var a = b = function() {console.log(222);};
   }
    aaa();
    console.log(a);//1
    console.log(b);//function() {console.log(222);};

这个结果的确理所当然,可是总是觉得世界本来不该是这个样子,有没有?

點(diǎn)擊查看更多內(nèi)容
10人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
Web前端工程師
手記
粉絲
9109
獲贊與收藏
2572

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消