現有宣告後有賦值
宣告在編譯時會提公升位置,提公升時函式會優先變數,如果是同名函式順序排在後面的會覆蓋前面的函式
函式表示式:
立即執行的函式表示式
var a = 2;(function iife(global) )(window);
塊作用域和閉包
閉包:
function foo()return bar
}var baz = foo();
baz() // 3
for(var i = 0; i< 5; i++),i*1000)}// 5
// 5
// 5
// 5
// 5
// 不是期待的結果,因為他們要找i的話就要取的同乙個i
解決方式
閉包:for(var i = 0; i< 5; i++),i*1000)
})(i)
}塊作用域:
for(let i = 0; i< 5; i++),i*1000)
}
es6之前模組化:
var foo = (function greeting()function goodafternoon()
function goodevening()
return
})()
var mymoudles = (function manager() ;function define(name,deps,impl)
export hello;
// import bar from "bar"
module bar from "bar"
bar.hello("xiao jie jie");
// import 是將乙個模組中的乙個或者多個api倒入當前作用域中
// module是將整個模組的api匯入並繫結到乙個變數上
this與詞法作用域
this指向問題:
var obj =}var id = "not awesome";
obj.cool();// awesome
settimeout(obj.cool,100);//not awesome
解決方法:
第一種
var obj = ,100)}}}obj.cool();// awesome
第二種
var obj = .bind(this),100)}}}obj.cool();// awesome
第三種
var obj = ,100)}}}obj.cool();// awesome
作用域和閉包
給執行上下文環境下乙個通俗的定義 在執行 之前,把將要用到的所有的變數都事先拿出來,有的直接賦值了,有的先用undefined占個空。全域性 的上下文環境資料內容為 1 普通變數 包括函式表示式,如 var a 10 宣告 預設賦值為undefined 2 函式宣告 如 function fn 賦值...
作用域和閉包
題目 知識點 1 執行上下文 2 this 3 作用域 4 作用域鏈 5 閉包 一 執行上下文 ps 函式宣告和函式表示式的區別 執行上下文 console.log a undefined var a 10 fn 張三 22 張三 22 function fn name 在script標籤內的全域性...
作用域 閉包
1.js執行順序 語法分析 預編譯 先生成go物件 1.函式執行生成ao物件 2.形參和變數作為ao物件的鍵名,鍵值是undefined 3.實參賦值給形參 4.在函式中找到函式宣告,把函式作為ao物件的屬性名,屬性值為函式體 執行js 作用域 變數作用範圍 1.作用域 變數作用範圍 1 函式作用域...