欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳談js的變量提升以及使用方法

 更新時(shí)間:2018年10月06日 12:19:57   投稿:laozhang  
在本專欄中小編給大家整理了關(guān)于js的變量提升以及使用方法的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。

介紹

變量提升Hoisting是人們對(duì)JavaScript執(zhí)行上下文工作方式的一種認(rèn)識(shí),并不是官方給出的改變

從字面上理解,變量提升的意思是變量和函數(shù)的聲明會(huì)在物理層移動(dòng)到作用域的最前面。但是這樣理解并不準(zhǔn)確,效果是相同的,但是實(shí)際的實(shí)現(xiàn)方式是JavaScript的變量和函數(shù)的聲明會(huì)在編譯階段放入內(nèi)存

這意味著使用者在正式聲明一個(gè)函數(shù)或者變量之前就能夠使用它

函數(shù)的提升

在JavaScript中,在聲明一個(gè)函數(shù)前,我們就能夠使用它,大家應(yīng)該都體驗(yàn)過,像這樣:

test();

 

function test() {

  // do something

}

在正常的使用情況下,應(yīng)該需要先聲明函數(shù)才能調(diào)用,但是這種方法仍然能夠運(yùn)行,這是因?yàn)镴avaScript自動(dòng)將函數(shù)聲明事先存入了內(nèi)存的原因,看起來就像JavaScript自動(dòng)把函數(shù)聲明提升到了最前面

變量的提升

對(duì)于變量,JavaScript使用類似的方法,但是要注意一點(diǎn)的是,對(duì)于變量的提升,JavaScript只會(huì)將變量聲明提升,但是不會(huì)把初始化提升,如果在變量初始化之前使用,則會(huì)得到undefined

// undefined

console.log(a);

// ReferenceError: b is not defined

console.log(b);

var a = 10;
// undefined

console.log(num);

num = 6;

// 6

console.log(num);

num += 7;

// 13

console.log(num);

var num;
// undefined

console.log(num);

num = 1;

// 1

console.log(num);

var num = 2;

// 2

console.log(num);

這里要注意,JavaScript的變量提升是針對(duì)var的,而let和const不存在變量提升這一特性

// ReferenceError: a is not defined

console.log(a);

let a = 10;

一個(gè)復(fù)雜一點(diǎn)的例子

var a = 100;

function fn() {

  // undefined

  console.log(a);

  var a = 200;

  // 200

  console.log(a);

}

fn();

// 100

console.log(a);

var a;

// 100

console.log(a);

// 300

var a = 300;

console.log(a);

相關(guān)文章

  • JavaScript 學(xué)習(xí)筆記之語句

    JavaScript 學(xué)習(xí)筆記之語句

    這篇文章主要介紹了JavaScript中的語句,包括條件分支語句、循環(huán)語句、迭代語句、Lable語句、break和continue語句、with語句、swith語句,十分全面細(xì)致,推薦給小伙伴們。
    2015-01-01
  • 淺析JS原型繼承與類的繼承

    淺析JS原型繼承與類的繼承

    下面小編就為大家?guī)硪黄獪\析JS原型繼承與類的繼承。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-04-04
  • 簡(jiǎn)單談?wù)凧avascript函數(shù)中的arguments

    簡(jiǎn)單談?wù)凧avascript函數(shù)中的arguments

    在JavaScript中,arguments對(duì)象是比較特別的一個(gè)對(duì)象,實(shí)際上是當(dāng)前函數(shù)的一個(gè)內(nèi)置屬性。下面這篇文章主要介紹了關(guān)于Javascript函數(shù)中的arguments面貌以及如何轉(zhuǎn)化為數(shù)組的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 淺析js綁定事件的常用方法

    淺析js綁定事件的常用方法

    下面小編就為大家?guī)硪黄獪\析js綁定事件的常用方法。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • JavaScript操作數(shù)組的常用方法總結(jié)

    JavaScript操作數(shù)組的常用方法總結(jié)

    這篇文章總結(jié)了JavaScript操作數(shù)組的常用方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 了解重排與重繪

    了解重排與重繪

    重繪和重排操作都是代價(jià)昂貴的操作,它們會(huì)導(dǎo)致web應(yīng)用程序的UI反應(yīng)遲鈍,所以應(yīng)該盡可能減少這類過程的發(fā)生。下面我們來簡(jiǎn)單了解一下
    2019-05-05
  • 你所要知道JS(DHTML)中的一些技巧

    你所要知道JS(DHTML)中的一些技巧

    你所要知道JS(DHTML)中的一些技巧...
    2007-01-01
  • Javascript入門學(xué)習(xí)資料收集整理篇

    Javascript入門學(xué)習(xí)資料收集整理篇

    為大家更好的接觸和學(xué)習(xí)js資料,所以我轉(zhuǎn)了這篇文章,我大約的看了下,文章寫的非常不錯(cuò),希望大家不要急,慢慢看,第一次看不懂不要緊,多練習(xí)就可以了
    2008-07-07
  • javascript cookie基礎(chǔ)應(yīng)用之記錄用戶名的方法

    javascript cookie基礎(chǔ)應(yīng)用之記錄用戶名的方法

    這篇文章主要介紹了javascript cookie基礎(chǔ)應(yīng)用之記錄用戶名的方法,涉及javascript基于cookie針對(duì)數(shù)據(jù)存儲(chǔ)的簡(jiǎn)單應(yīng)用,需要的朋友可以參考下
    2016-09-09
  • 淺析JavaScript中的typeof運(yùn)算符

    淺析JavaScript中的typeof運(yùn)算符

    這篇文章主要是對(duì)JavaScript中的typeof運(yùn)算符進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11

最新評(píng)論