js中動態函式的一些用法嘗試

2021-08-22 08:16:11 字數 1449 閱讀 5202

在js中,經常會使用到函式,普通函式雖然很方便,但是,形式略顯複雜,特別是**量大的時候,這時,我們可以使用動態函式,動態函式形式比較簡潔,並且比普通函式表示式更靈活,其結構如下:

var fun_name=new function(x1,x2,x3,...,fun_body)
這裡需要注意的是,....表示的是省略,可以作為偽**來看,並且,function不能寫成function,不然會報錯,我們可以對比一下:

var fun1 = new function("num1","num2","return num1+num2");

console.log(fun1(12,2))

執行結果:14

結果正確,我們換成function:

var fun1 = new function("num1","num2","return num1+num2");

console.log(fun1(12,2))

執行結果:

uncaught syntaxerror: unexpected string

果然報錯了,這裡就需要了解到function 和function的區別,這篇部落格(詳細地查了英文文件,給了我們解答。function是用於宣告函式時用的,而function是 constructor,裡面需要傳的是string,剛才的嘗試中,顯然我們並不是宣告函式。而且我們傳入的引數必須以字串的形式進行,我們嘗試一下:

var fun1 = new function(num1,num2,return num1+num2);

console.log(fun1(12,2))

執行結果:

uncaught syntaxerror: unexpected token return

因此我們在使用function的時候,必須傳入string的形式。

關於動態函式中的fun_body,到底什麼形式的才算fun_body呢?此表示式只要參與運算就行嗎?答案當然不是,因為函式必須要有返回值,沒有返回值的運算是沒有作用的,我們可以看下:

var fun1 = new function("num1","num2","num1+num2");

console.log(fun1(12,2))

我們的fun_body裡使用了運算子「+」,實際上並沒有什麼卵用,得不到結果,會出現:

undefined

我大膽地進行猜測,這是因為沒有識別到fun_body嗎。我們嘗試一下:

var fun1 = new function("num1","num2","num1+num2");
執行結果為空白,沒有報錯。

說明我們的猜測是對的。這問題等價於「num1+num2"也作為引數了,沒有fun_body。說明fun_body是可以省略但是這樣做沒有實際價值。

動態讀取選單 拯救動態磁碟的一些嘗試

最近在閒魚上把接近六年歷史的老神舟出了二手,拆下來一堆硬碟。剛好用來當倉庫盤,放各種 和舊檔案的備份。之前買過乙個硬碟盒,用來裝ssd當行動硬碟。本想著直接用,然後發現舊筆記本裡1t的hdd插上電腦沒有反應。稍作搜尋和諮詢後得出結論 應該是硬碟盒的供電不足?遂又下單了乙個據說主控很高階的硬碟盒。連上...

js中的一些函式問題

test1 function foo return this vargetname function foo getname 1解析 宣告提前後再分析 var getname function foo return this getname function foo getname foo 返回的是...

js的一些常用法

1 判斷螢幕大小的 window.screen.width 2 for var i 0 itable tab for var ji 1 ji strcontent count unit stropt desc.substr stropt desc.indexof 2 strcount unit if...