【JavaScript高階進階】JavaScript變數/函式提升的細節總結
版權宣告:本文為博主原創文章,未經博主允許不得轉載。更多學習資料請訪問我愛科技論壇:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81478248
// 測試1
console.log(`----------test1--------------`);
console.log(global); // undefined
var global = `hahaha`;
console.log(global); // hahaha
function fn(){
console.log(a); // undefined
var a = `aaa`;
console.log(a); // aaa
}
// 如果一個變數沒有定義的話就去輸出,就會報出錯誤
//console.log(a); // error : undefined
fn();
// 程式碼執行思路解析
/*var global; // 變數提升,全域性作用域範圍內,此時只是宣告,並沒有賦值
console.log(global); // undefined
global = `hahaha`; // 此時給變數賦值
console.log(global); // 輸出已經賦值過的global變數
function fn(){
var a; // 變數提升為函式作用域範圍內
console.log(a);
a = `aaa`;
console.log(a);
}
fn();*/
// 測試2 : 函式提升
console.log("------------------函式提升測試-----------------");
console.log(f1); // [Function: f1]
console.log(f2); // undefined
function f1(){ // 這塊程式碼會自動函式提升,整個程式碼塊提升到檔案的最開始部分
}
var f2 = function(){
}
console.log(f2);
// 測試3
console.log("------------test3---------------");
// 第一步會先去執行f1()函式,執行完畢這個函式之後開始列印輸出這個函式的返回值
console.log(f1()); // undefined 123456hahaha
function f1(){
console.log(`aaa`); // aaa
return `123456hahaha`;
}
console.log(f4); // var f4 undefined
var f4 = function(){
console.log(`f4 executed!`);
return `f4 hahaha!`;
}
console.log(f4, typeof f4); // 這裡得到的實際上是一個函式
// 測試4
console.log(`-------------test4------------`);
console.log(aaa); // undefined
aaa = `987654321`; // 987654321
console.log(aaa);
var aaa = `123456789`;
console.log(aaa); // 123456789
var aaa = `789`;
console.log(aaa); // 789
// 測試5
console.log(`--------------test5----------------`);
var a = `12346789`;
(function(){
// 這裡的a預設是回去尋找全域性作用域裡面的a變數
console.log(a); /// error : a is not defined
a = `113579`;
var b = `bbb`;
console.log(a);
})();
// 測試6
// 在方法外邊不加上一個var是不能來定義變數的
//01. 都加var,在方法內則是區域性變數,在方法外則是全域性變數。
//02. 在方法內,加var為區域性變數,不加var則是全域性變數(在執行當前方法之後)
//console.log(bianliang); // error : is not defined
console.log(`-----------------test6-----------------`);
function test(){
//console.log(shuchubianliang); // error : is not defined
}
test();
var aaaa = `I`m a in all`
function test1 () {
// 相當於是var a, 然後輸出a的值,當然是undefined
console.log(aaaa)
//console.log(window.a)
var a = `I`m a in test1`
console.log(a)
}
test1()
// JavaScript會把作用域裡的所有變數和函式提到函式的頂部宣告
// JavaScript會使用undefined預設值建立變數a
console.log(aaaaaaa); // error
var aaaaaaa = `11`;
console.log(`------------test7-------------`);
//思考題: 請問下面的結果是什麼? 為什麼? 寫下你的答案
show();
var a = true;
if( a ){
function show(){
console.log( 1 );
}
}else {
function show(){
console.log( 2 );
}
}
//函式宣告, 形如:
function show(){
console.log( `函式宣告方式` );
} // 會被提升為全域性
//函式表示式, 形如:
var show = function(){
console.log( `表示式方式` );
} // 不會被提升為全域性的
相關文章
- Javascript 高階函式JavaScript函式
- javaScript高階級函式JavaScript函式
- JavaScript進階之函式JavaScript函式
- 【進階 6-1 期】JavaScript 高階函式淺析JavaScript函式
- javascript高階函式的介紹JavaScript函式
- 理解 JavaScript 中的高階函式JavaScript函式
- javascript高階函式的應用JavaScript函式
- Javascript 函式和變數提升JavaScript函式變數
- 《前端之路》之 JavaScript 高階技巧、高階函式(一)前端JavaScript函式
- javascript之變數提升與函式提升JavaScript變數函式
- JavaScript 高階函式快速入門JavaScript函式
- javascript高階基礎的深入總結JavaScript
- JavaScript進階系列01,函式的宣告,函式引數,函式閉包JavaScript函式
- JavaScript(1)高階函式filter、map、reduceJavaScript函式Filter
- javascript高階函式---filter---map---reduceJavaScript函式Filter
- javascript高階函式簡單介紹JavaScript函式
- Python 函式進階-高階函式Python函式
- JavaScript進階之函式柯里化JavaScript函式
- JavaScript 高階函式(Heigher-order function)JavaScript函式Function
- 深入理解javascript系列(十五):高階函式JavaScript函式
- JavaScript入門學習之旅(一)——JavaScript變數提升和函式提升JavaScript變數函式
- JavaScript中高階函式的魅力JavaScript函式
- 關於javascript中變數及函式的提升JavaScript變數函式
- Java-JavaScript高階-第34節JavaScript
- 閉包詳解二:JavaScript中的高階函式JavaScript函式
- 深入理解javascript系列(十六):深入高階函式JavaScript函式
- javascript中關於匿名函式高階介紹JavaScript函式
- JavaScript進階JavaScript
- 提升開發技能:10個高階的JavaScript技巧JavaScript
- JavaScript 高階技巧JavaScript
- JavaScript進階知識點——函式和物件詳解JavaScript函式物件
- 從高階函式--->高階元件函式元件
- 高階函式技巧-函式防抖與節流函式
- JavaScript變數提升JavaScript變數
- 常用JavaScript的高階技巧JavaScript
- javascript的高階應用JavaScript
- JavaScript系列--JavaScript陣列高階函式reduce()方法詳解及奇淫技巧JavaScript陣列函式
- JavaScript之坑了我--函式細節JavaScript函式