如何在Chrome'JavaScript Console'中使用'严格'模式

Pra*_*vol 49 javascript google-chrome

我在Chrome的"JavaScript控制台"(版本:35.0)上练习JavaScript,我无法按预期使用'use strict'子句.

对于以下代码段:

var obj={x:1,y:2}

//Define new property with 'writable' flag as false.
Object.defineProperty(obj, "z", {value:3, writable:false, enumerable:false, configurable:false})

// Try to change the property 'z',
"use strict"; obj["z"]=4
Run Code Online (Sandbox Code Playgroud)

产量:4

根据我的理解,改变'不可写'属性的值将在非严格模式下无声地失败并在严格模式下抛出'TypeError',但我没有看到异常.

console.log(obj)
Run Code Online (Sandbox Code Playgroud)

对象{x:1,y:2,z:3}

即使财产价值没有改变,但我期待一个例外.如果我做错了,请更正?

Eli*_*gem 66

使用严格模式的最简单方法是使用IIFE(立即调用函数表达式),如下所示:

(function()
{
    'use strict';
    var foo = 123;//works fine
    bar = 345;//ReferenceError: bar is not defined
}());
Run Code Online (Sandbox Code Playgroud)

要在控制台中创建换行符,请先使用shift + enter,或者先在单独的编辑器中编写代码,然后将其复制粘贴到控制台.设置一个小提琴是好的和花花公子,但只是用它编写的标记测试你的代码(即:只需清除浏览器缓存和测试).
但是,我还是建议您安装node.js.使用JSHint测试代码或验证代码(语法和编码风格)要容易得多.还有很多方法可以检查和运行node.js的代码,因此它是一个非常好的开发工具.

  • 实际上,您可以在代码之前编写“use strict”,而无需将其包装在 IIFE 中。 (2认同)
  • @Shayan 老实说,我不确定这个例子是否特别应该返回“undefined”。试试这个“使用严格”;(function() { console.log(this)} )()`。按预期工作 - 应用严格模式。 (2认同)