#請問一下 new 後面的mm函數 加不加括號有什麼區別 為什麼我得到的結果都是一樣的請資深大神講解一下裡面的原理
首先,這種偏向基礎的問題要學會查閱官方文檔文檔中有詳細說明:new foo 等同於new foo(), 只能用在不傳遞任何參數的情況當然,也不能完全相信文檔,畢竟js的坑。 。 那差別在哪裡?在這優先權匯總中有詳細說明:new(帶參數列表的)的優先權為19,而new(無參數離別)的優先權為18,所以new foo()會先執行
最後,我記得不久前看到一篇文章講的就是一個比較噁心的面試題,考的就是.,new f(),new f,new f.g(),new f().g()等等的優先運算問題,可以自己搜尋一下
參考 MDN
new constructor[([arguments])]
不需要傳遞參數時,括號()是可選項
()
var mm = 函數(val){
}var a = new mm(1) ;console.log(a)var b = new mm ;console.log(b)
如果建構函式不需要參數,加和不加括號沒有差別。
首先,這種偏向基礎的問題要學會查閱官方文檔
文檔中有詳細說明:new foo 等同於new foo(), 只能用在不傳遞任何參數的情況
當然,也不能完全相信文檔,畢竟js的坑。 。
那差別在哪裡?在這
優先權匯總中有詳細說明:new(帶參數列表的)的優先權為19,而new(無參數離別)的優先權為18,所以new foo()會先執行
最後,我記得不久前看到一篇文章講的就是一個比較噁心的面試題,考的就是.,new f(),new f,new f.g(),new f().g()等等的優先運算問題,可以自己搜尋一下
參考 MDN
不需要傳遞參數時,括號
()
是可選項var mm = 函數(val){
雷雷}
var a = new mm(1) ;
console.log(a)
var b = new mm ;
console.log(b)
如果建構函式不需要參數,加和不加括號沒有差別。