成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小tips:JS嚴(yán)格模式(use strict)下不能使用arguments.callee的替代方案

longmon / 2473人閱讀

摘要:如下,一般在非嚴(yán)格模式下遞歸調(diào)用一般這樣使用但是如果代碼是在嚴(yán)格模式下開(kāi)發(fā)結(jié)果在嚴(yán)格模式下不能通過(guò)腳本訪問(wèn)訪問(wèn)這個(gè)屬性會(huì)報(bào)錯(cuò),那么可以使用命名函數(shù)表達(dá)式來(lái)達(dá)到相同的結(jié)果以上代碼創(chuàng)建了一個(gè)名為的命名函數(shù)表達(dá)式,然后將它賦值給變量即是把函

如下,一般在非嚴(yán)格模式下遞歸調(diào)用一般這樣使用:

function factorial(num){
    if(num<=1){
        return 1;
    }else {
        return num * arguments.callee(num-1);
    }
}

console.log(factorial(4)); //24

但是如果代碼是在嚴(yán)格模式下開(kāi)發(fā):

"use strict";
function factorial(num){
    if(num<=1){
        return 1;
    }else {
        return num * arguments.callee(num-1);
    }
}

console.log(factorial(4));

結(jié)果:Uncaught TypeError: "caller", "callee", and "arguments" properties may not be accessed on strict mode functions or the arguments objects for calls to them

在嚴(yán)格模式下不能通過(guò)腳本訪問(wèn)arguments.callee,訪問(wèn)這個(gè)屬性會(huì)報(bào)錯(cuò),那么可以使用命名函數(shù)表達(dá)式來(lái)達(dá)到相同的結(jié)果:

"use strict";
var factorial = (function f(num){
     if(num<=1){
        return 1;
    }else {
        return num * f(num-1);
    }
})

console.log(factorial(4)); //24

以上代碼創(chuàng)建了一個(gè)名為f()的命名函數(shù)表達(dá)式,然后將它賦值給變量factorial,即是把函數(shù)賦值給另外一個(gè)變量,函數(shù)的名字仍然有效。

在看一段代碼:

(function  foo(bar) {
  if (bar) {
    return;
  }
  foo(true);
})();

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89774.html

相關(guān)文章

  • tipsJS之淺拷貝與深拷貝

    摘要:淺拷貝深拷貝淺拷貝的問(wèn)題如果父對(duì)象的屬性等于數(shù)組或另一個(gè)對(duì)象,那么實(shí)際上,子對(duì)象獲得的只是一個(gè)內(nèi)存地址,而不是真正拷貝,因此存在父對(duì)象被篡改的可能。 淺拷貝: function extendCopy(p) {  var c = {};  for (var i in p) {    c[i] = p[i];  }  return c; } 深拷貝: function deepCopy(p...

    Soarkey 評(píng)論0 收藏0
  • 那些年,前端學(xué)習(xí)之路疑難雜癥(一):嚴(yán)格模式與非嚴(yán)格模式

    摘要:反之亦然非嚴(yán)格合并嚴(yán)格看起來(lái)是非嚴(yán)格的。在普通的里面給一個(gè)拼寫錯(cuò)誤的變量名賦值會(huì)使全局對(duì)象新增一個(gè)屬性并繼續(xù)工作盡管后面可能出錯(cuò)在現(xiàn)在的中有可能。第三嚴(yán)格模式禁止刪除聲明變量。 文章整理自MSDN:https://developer.mozilla.org... 1.逐步使用嚴(yán)格模式 ECMAScript 5的嚴(yán)格模式是JavaScript中的一種限制性更強(qiáng)的變種方式。嚴(yán)格模式不是一個(gè)...

    zombieda 評(píng)論0 收藏0
  • 嚴(yán)格模式

    摘要:嚴(yán)格模式創(chuàng)設(shè)了第三種作用域作用域。正常模式下,指向全局對(duì)象,如果綁定的值是非對(duì)象,將被自動(dòng)轉(zhuǎn)為對(duì)象再綁定上去,而和這兩個(gè)無(wú)法轉(zhuǎn)成對(duì)象的值,將被忽略嚴(yán)格模式 概述 嚴(yán)格模式是ES5進(jìn)入標(biāo)準(zhǔn)的目的是為了: 明確禁止一些不合理 不嚴(yán)謹(jǐn)?shù)恼Z(yǔ)法 減少JS語(yǔ)言的一些怪異行為 增加更多報(bào)錯(cuò)的場(chǎng)合 保證代碼運(yùn)行的安全 提高編譯效率 增加運(yùn)行速度 為新版的JS語(yǔ)法做鋪墊 如何開(kāi)啟 使用一段字符串...

    Yi_Zhi_Yu 評(píng)論0 收藏0
  • use strictJS(二):函數(shù)傳參模式arguments

    摘要:系列系列列表從看一與箭頭函數(shù)從看二函數(shù)傳參模式與的上一篇說(shuō)到,對(duì)做了以下限定。是另外一個(gè)變量,指向不同的值,而這兩個(gè)值有相同的類型。函數(shù)中,和指向同一個(gè)值,更改的就等于更改了的。可以用改進(jìn)問(wèn)題是這個(gè)在嚴(yán)格模式下不能運(yùn)行。 系列 系列列表:從use strict看JS(一):this與箭頭函數(shù)從use strict看JS(二):函數(shù)傳參模式與arguments use strict 的 ...

    kycool 評(píng)論0 收藏0
  • javascript - 嚴(yán)格模式

    摘要:概述嚴(yán)格模式是什么嚴(yán)格模式是中的一種限制性更強(qiáng)的變種方式。在嚴(yán)格模式下,靜默失敗會(huì)轉(zhuǎn)為報(bào)錯(cuò)。拋出錯(cuò)誤非嚴(yán)格模式下靜默錯(cuò)誤屬性名必須唯一在嚴(yán)格模式下,一個(gè)對(duì)象內(nèi)的所有屬性名必須唯一。非嚴(yán)格模式最后一個(gè)重名參數(shù)會(huì)覆蓋之前的重名參數(shù)。 概述 嚴(yán)格模式是什么 嚴(yán)格模式是JavaScript中的一種限制性更強(qiáng)的變種方式。嚴(yán)格模式可以和非嚴(yán)格模式共存,所以腳本可以逐漸的選擇性加入嚴(yán)格模式。 嚴(yán)格模...

    PrototypeZ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<