日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

js的变量提升是什么意思?js变量提升使用介绍(实例)(变量函数提升)

發布時間:2023/12/24 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 js的变量提升是什么意思?js变量提升使用介绍(实例)(变量函数提升) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章給大家帶來的內容是關于js的變量提升是什么意思?js變量提升使用介紹(實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

介紹

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

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

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

函數的提升

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

test();

function test() {
    // do something
}

登錄后復制

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

變量的提升

對于變量,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的,而letconst不存在變量提升這一特性

// ReferenceError: a is not defined
console.log(a);
let a = 10;

登錄后復制

一個復雜一點的例子

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);

登錄后復制

相關推薦:

js變量提升詳解

JS中作用域和變量提升(hoisting)的深入理解

以上就是js的變量提升是什么意思?js變量提升使用介紹(實例)的詳細內容,更多請關注風君子博客其它相關文章!

總結

以上是生活随笔為你收集整理的js的变量提升是什么意思?js变量提升使用介绍(实例)(变量函数提升)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。