第一題:
var a = 6; for(var a = 0; a < 9; a++){ } console.log(a);
第二題:
var B = { num: "123", fn: function (){ console.log(this.num); } } B.fn(); var A = B.fn; A();
第三題:
function A(a){ console.log(a++); A = function (b){ console.log(a++ + b); } } A(1); A(1);
參考答案:
第一題:
考點:變數提升,變數作用域
var不支持塊級作用域,所以for中的變數a會覆寫掉for外面的,a在0~8回圈,在9時跳出,所以最后輸出9
第二題:
考點:函式的this
B.fn()的輸出為123,A()的輸出為undefined,函式中的this是動態的,取決于誰呼叫,B是由全域window呼叫的,window下無num屬性,所以輸出為undefined
第三題:
考點:閉包,自增運算子
第一次呼叫A(1)輸出為1,并將一個新函式(閉包函式)賦值給A
第二次呼叫A(1)時,執行的是閉包函式,閉包函式中可以使用父函式的變數a(為2),b為1,所以a++ + b為3,輸出為3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/274380.html
標籤:JavaScript
上一篇:(辦公)輕松學redux
