匿名函式自呼叫
for(var i = 0 ; i < 5 ; i++))(i),i*1000);
}複製**
答案:0,1,2,3,4
解析:
for(var i = 0 ; i < 5 ; i++))(i);
settimeout(fn,i*1000);
}fn匿名函式自呼叫立即執行,所以先列印0,1,2,3,4。然後 函式沒有返回值。所以
settimeout(undefined,i*1000); 分別0s,1s,2s,3s,4s列印undefined。
複製**
逗號表示式
var a = 10, b = 20;
function
commatest
()var c = commatest();
alert(a);
alert(b);
alert(c);
複製**
答案:11 21 10
解析: a++ 先賦值再自增。不管怎樣,最後的值都會加1.所以a為11,b為21。逗號表示式返回的都是最後乙個值。所以結果為10。
逗號表示式
var out = 25,
inner =
};console.log((inner.func, inner.func)());
console.log(inner.func());
console.log((inner.func)());
console.log((inner.func = inner.func)());
複製**
答案:25,20,20,25
解析: (inner.func, inner.func)() 是進行逗號運算子,逗號運算子就是運算前一段表示式,且返回後一段表示式的結果。匿名函式的自呼叫,this指向的window。所以第乙個this.out指向的全域性的out 為25。 第二個和第三個都是方法呼叫。所以out為20。最後乙個和第乙個相同。等號運算子,返回的是結果inner.func = inner.func。即20。
原型
function
supertype
()supertype.prototype.getsupervalue = function
()function
subtype
()subtype.prototype = new supertype(); //繼承
subtype.prototype.getsubvalue = function
() var instance = new subtype() //例項
console.log(instance.getsupervalue())
複製**
答案:true 解析:看圖 instance通過__proto__.__proto__訪問到getsupervalue();建構函式裡的this.property為true。所以為true。
函式呼叫
function foo(x)
}var bar = foo(2);
bar(10);
複製**
答案:16
解析:
bar(10) => function (y)
所以y為10,因為x為2。 (++tmp)最後結果都會自增1.所以為 10+2+4 = 16。
複製**
函式宣告與呼叫
var funce = ;
for(var i = 0; i < 3; i++)
}for(var j = 0; j < 3; j++)
複製**
答案:列印3次3
解析:第乙個for函式宣告for迴圈結束i為3,但函式未呼叫。第二個for迴圈了3次分別呼叫了函式。所以列印了3次3。
建構函式與原型
建構函式是給物件新增屬性,初始化屬性用的。1 神秘物件與建構函式 2 神秘物件與建構函式所建立出來的物件 既然所有物件共享神秘物件 建構函式.prototype 內的屬性和方法。我們只需要將需要共享的東西,也就是重複占用記憶體的東西,全部都放到 神秘物件 建構函式.prototype 中。關鍵點 每...
建構函式與原型物件
1.建構函式中的屬性和方法我們稱為成員,成員可以新增 2.例項成員 建構函式內部通過this新增的成員 uname,age,sing 就是例項成員 例項成員只能通過例項化的物件來訪問 3.靜態成員 在建構函式本身上新增的成員 靜態成員只能通過建構函式來訪問 建構函式的問題 建構函式方法很好用,但是存...
建構函式與原型物件
建構函式本身就是乙個函式,只不過該函式是出於建立新物件的目的而建立的。建構函式與其他函式的唯一區別,就在於呼叫他們的方式不同。任何函式,只要通過new操作符來呼叫,那他就可以作為建構函式 而任何函式,如果不通過new操作符來呼叫,那它跟普通函式也沒有什麼兩樣。當做構造函式呼叫 let person1...