最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

有可能说节点编译器暂时忽略严格模式吗?

IT培训 admin 9浏览 0评论

有可能说节点编译器暂时忽略严格模式吗?

第一个按预期工作:

var f1 = Object.getOwnPropertyNames(Function)
    .forEach(function(element) {
         console.log (typeof Function[element]);
    });  //  --> number, string, function

第二个输出错误消息:

var f2 = Object.getOwnPropertyNames(Function.prototype)
    .forEach(function(element) {
        console.log (typeof Function.prototype[element]);
});

TypeError:严格模式下可能无法访问“caller”,“callee”和“arguments”属性

我怎么能绕过那个?

编辑:当前的解决方法

var forbiddenOnStrictMode = ['caller', 'callee', 'arguments'];

var f2 = Object.getOwnPropertyNames(Function.prototype)
    .forEach(function(element) {
        if (forbiddenOnStrictMode.indexOf(element) == -1)
        console.log (typeof Function.prototype[element]);
});

有可能说节点编译器暂时忽略严格模式吗?

回答如下:

我在节点v8.8.1中的测试表明,像你说的那样运行的简单文件不是严格模式。我认为你所看到的是一个有点误导性的错误信息。这不是您在严格模式下运行的代码。您正在尝试访问Function.prototype上的某些内容,const isStrict = (function() { return !this; })(); console.log("strict mode", isStrict); 本身被标记为在严格模式下定义,因此解释器拒绝让您访问该对象上的这些属性。

有可能说节点编译器暂时忽略严格模式吗?

不,没有办法做到这一点。但这实际上不是你的问题。您可以使用以下方法测试您自己的代码是否处于严格模式:

qazxswpoi

您会发现node.js运行的简单文件不是严格模式。您的问题是您正在尝试访问由node.js标记为“严格模式”定义的原型。该严格模式定义内置于JS实现中。它不是来自您的代码中的严格模式。我不知道有任何改变方法。我想你必须配合你的工作。

有可能说节点编译器暂时忽略严格模式吗?

第一个按预期工作:

var f1 = Object.getOwnPropertyNames(Function)
    .forEach(function(element) {
         console.log (typeof Function[element]);
    });  //  --> number, string, function

第二个输出错误消息:

var f2 = Object.getOwnPropertyNames(Function.prototype)
    .forEach(function(element) {
        console.log (typeof Function.prototype[element]);
});

TypeError:严格模式下可能无法访问“caller”,“callee”和“arguments”属性

我怎么能绕过那个?

编辑:当前的解决方法

var forbiddenOnStrictMode = ['caller', 'callee', 'arguments'];

var f2 = Object.getOwnPropertyNames(Function.prototype)
    .forEach(function(element) {
        if (forbiddenOnStrictMode.indexOf(element) == -1)
        console.log (typeof Function.prototype[element]);
});

有可能说节点编译器暂时忽略严格模式吗?

回答如下:

我在节点v8.8.1中的测试表明,像你说的那样运行的简单文件不是严格模式。我认为你所看到的是一个有点误导性的错误信息。这不是您在严格模式下运行的代码。您正在尝试访问Function.prototype上的某些内容,const isStrict = (function() { return !this; })(); console.log("strict mode", isStrict); 本身被标记为在严格模式下定义,因此解释器拒绝让您访问该对象上的这些属性。

有可能说节点编译器暂时忽略严格模式吗?

不,没有办法做到这一点。但这实际上不是你的问题。您可以使用以下方法测试您自己的代码是否处于严格模式:

qazxswpoi

您会发现node.js运行的简单文件不是严格模式。您的问题是您正在尝试访问由node.js标记为“严格模式”定义的原型。该严格模式定义内置于JS实现中。它不是来自您的代码中的严格模式。我不知道有任何改变方法。我想你必须配合你的工作。

发布评论

评论列表 (0)

  1. 暂无评论