在這個問題上,我不想問「功能」,我想問一下「功能」拼圖差異
<script type="text/javascript">
var test = function() {
alert('a');
};
var test1 = new function() {
alert('b');
};
</script>
爲什麼它會彈出「b」?
在這個問題上,我不想問「功能」,我想問一下「功能」拼圖差異
<script type="text/javascript">
var test = function() {
alert('a');
};
var test1 = new function() {
alert('b');
};
</script>
爲什麼它會彈出「b」?
new function
將執行該功能,您可以使用IIFE(立即─調用函數表達式),以及:
var test1 = (function() {
alert('b');
}());
功能(P1,P2,...,PN,身體)
當使用一些參數p1,p2,...,pn,body(其中n可能爲0,也就是說,沒有「p」參數,並且body也可能不會被提供)調用函數函數,則採取以下步驟:
創建並返回一個新的Function對象f標準內置構造函數函數用於具有相同參數的新表達式中。
new
用於在Javascript工廠模式。 它通過執行構造函數來創建並返回一個對象。在你的情況下,使用new
是沒有意義的。
其內置的函數被用作構造函數不需要括號,如果你不傳遞任何參數:
var Person = function() { this.is_alive = true; },
bob = new Person;
bob.is_alive;
...但任何函數可以被稱爲構造函數,不管你是否使用返回的對象或不...
new function() { console.log("Bob"); }
這不會保存任何地方的功能 - 它會立即運行它,到位,即刻。
有關新關鍵字的基本描述,請參見What is the 'new' keyword in JavaScript?。
實際上,您正在調用構造函數到一個新的對象。我來給你展示。
var Animal = function(name) {
alert("Animal Created: " + name);
}
jaguar = new Animal("Cool");
從唯一的區別以及你所做的是聲明在同一行的功能定義新的對象:
jaguar = new function(name) {
alert("Animal Created: " + name);
}
這就是爲什麼「B」被打印出來。
請參閱http://stackoverflow.com/questions/2274695/new-function-with-lower-case-f-in-javascript – xbonez 2013-02-28 06:14:49