今天一個剛學js的朋友給了我一段代碼問爲何方法不執行,代碼以下:函數
代碼以下:
function makefunc(x) {
return function (){
return x;
}
}
alert(makefunc(0));
結果是:function (){return x;}不是0
不是腳本寫錯了,只是沒搞懂return,從當前函數退出,並從那個函數返回一個值。若是返回的是一個函數,那麼返回的也是函數自己。
能夠這樣修改上面的代碼,就是alert(makefunc(0)()): spa
若是想要執行alert(makefunc(0))返回的結果是0,能夠這麼改寫;例如:io
代碼以下:
function makefunc(x) {
return (function (){
return x;
})();
}
alert(makefunc(0));
這裏有一個匿名函數, function
代碼以下:
(function (){
return x;
})();
在第一個括號內是匿名函數,第二個括號用於調用該匿名函數,您能夠在第二個括號中傳入所需的參數。例如: 匿名函數
代碼以下:
(function( x , y){ alert( x + y); })(2 ,3 );