问题标签 [use-strict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在不修改实用程序对象范围的情况下使用“使用严格”?
我正在使用几个全局实用程序对象,例如:
"use strict"
在这种情况下如何使用?我尝试了以下方法:
但正如您可以想象StringUtils
的那样,在其范围之外不再可用。
javascript - 这是 Chrome 错误还是我使用“use strict”和 eval 无效?
此代码在除 Chrome 之外的所有浏览器中都可以正常工作:
(在jsfiddle上试试)。
我所做的只是在上下文中从'use strict'
函数中引用外部变量。eval
铬 说
注意:我最初devtool: 'eval'
在 Webpack中使用时遇到过它。
javascript - 是否添加“使用严格”;功能块影响后来添加到原型的方法和属性?
对此进行了一些搜索,但没有找到任何确切的信息。请考虑以下示例:
我的问题与以下每种情况有关:
场景 1:在与上面相同的文件中,我们有以下代码:
或 --> 场景 2:在单独的文件中,与场景 1 相同的代码(显然可以在构造函数之前或之后:
简而言之,我想了解的是如何“使用严格”;影响代码,以及在哪里。另一个好问题:为什么 JSHint 建议只使用“函数
javascript - Javascript 使用严格错误未捕获
我正在为 AMD 创建一个使用 require.js 的主干.js 应用程序。为了检查use strict
浏览器中的支持,我包含了以下代码。但是,当代码运行时,抛出的错误var o = {p:1, P:2}
并没有像我预期的那样被捕获,而是杀死了整个页面。
Chrome 控制台打印此错误:Uncaught SyntaxError: Duplicate data property in object literal not allowed in strict mode
为什么错误使我的页面崩溃而不是被捕获?我怎样才能解决这个问题?
javascript - 函数 foo(param) { alert("foo 调用"); } 和 $scope.foo = function(param){alert("foo");};
我想我和许多其他人一样在使用 AngularJS 时遇到了类似的问题。我正在修复以前的错误消息(我无法从测试描述块中调用控制器函数)并得到新的错误。
错误:[ng:areq] 参数 'fooController' 不是函数,未定义
我已经阅读了其他帖子,但仍然无法纠正。
所以我的控制器就像..
我的控制器规格是..
为什么它一直说 fooController 不是一个函数?
谢谢大家。
旧帖已编辑。请您阅读底部的帖子(我的新问题?:))
function - 为什么 JSHint 在带参数的自调用函数结束时显示缺少“使用严格”错误
jsHint 使用我传入参数的标准模块模式在自调用函数的末尾生成错误:}(window.document, jQuery))
有谁知道为什么?
javascript - “使用严格”和只读属性的奇怪行为
任何在正常代码中静默失败的赋值(赋值给不可写属性、赋值给 getter-only 属性、赋值给不可扩展对象的新属性)都将进入严格模式
因此,使用他们的示例,执行以下操作会引发 TypeError
然而,我遇到了一个例子,似乎“使用严格”对这条规则有点过分热心。这是我的设置
定义lol.js
setlol.js
应用程序.js
跑步node app.js
给
这个输出有几个有趣的地方。首先是我们不是在尝试设置lol
属性,Object.prototype
而是在尝试设置 的lol
属性verbose
。为了证明这一点,我变成definelol.js
了
现在,跑步node app.js
给
有趣的第二件事是原始程序失败verbose.lol = '123'
但非常高兴创建sugar
并将其设置lol
为 123。我不明白这一点,因为似乎我们创建的方式sugar
应该只是我们创建方式的语法糖verbose
javascript - 为什么“使用严格”仍然是字符串文字?
为什么我们仍然必须使用带引号的字符串文字才能strict
在 JS 中打开?当然,这里可以使用更强烈的“类型化”,例如调用内置函数Object.UseStrict()
或类似的东西。不得不求助于字符串文字的原因是什么?
node.js - 为什么“让” es6 和谐只适用于使用严格?
这段代码:
..给出“语法错误:扩展模式外的非法 let 声明”
但是使用“使用严格”它可以正常工作。
所以有趣的是为什么“让”首先与“使用严格”模式集成?(根据http://kangax.github.io/compat-table/es6/#nodeharmony)