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

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

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

介紹

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

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

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

函數(shù)的提升

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

test();

 

function test() {

  // do something

}

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

變量的提升

對于變量,JavaScript使用類似的方法,但是要注意一點的是,對于變量的提升,JavaScript只會將變量聲明提升,但是不會把初始化提升,如果在變量初始化之前使用,則會得到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的變量提升是針對var的,而let和const不存在變量提升這一特性

// ReferenceError: a is not defined

console.log(a);

let a = 10;

一個復(fù)雜一點的例子

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語句,十分全面細致,推薦給小伙伴們。
    2015-01-01
  • 淺析JS原型繼承與類的繼承

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

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

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

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

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

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

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

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

    了解重排與重繪

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

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

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

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

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

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

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

    淺析JavaScript中的typeof運算符

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

最新評論