问题标签 [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 - 为什么不是“使用严格”默认值?
为什么“使用严格”不是解释 ES6 javascript 的默认方式,而是更喜欢功能:“不要使用严格”(或其他)来关闭它?
以前,我认为“使用严格”有点像 macOS 中的安全模式(仅在必要时打开,然后只是暂时打开),但后来我了解到许多开发人员建议使用“使用严格”基本上一切都在 javascript 中。
那么,如果它是推荐的默认值,为什么它不是解释器的实际默认值呢?
javascript - 如何在 Reactjs 中使用未声明的变量
我在运行时使用 document.createElement('script') 在我的反应代码中创建一个脚本节点并将其 src 分配给一个 url,现在我想在我的反应代码中使用包含的 JS 的变量而不声明它。
angularjs - 我读到“使用严格”错误,但它没有说明究竟是什么导致了错误
似乎有一个不好的编码习惯,但它并没有准确地说明在哪里。有人有这方面的经验吗?
这是导致错误的代码
javascript - 为什么这段代码创建了对象,但仍将其视为未定义?
我不明白为什么这段代码不能按预期工作:
我一直认为=
运算符首先评估它右边的任何东西(这个片段中的 IIFE),然后将结果分配给它左边的任何东西(window.obj.prop
在这个片段中)。看起来这里发生了一些不同的事情。
如果解释器首先评估 IIFE,那么它应该window.obj
在设置它之前创建.prop
,这不应该导致TypeError
. 另一方面,如果解释器首先检查 in 的存在prop
(window.obj
并且TypeError
由于window.obj
未定义而失败),那么它不应该评估不应该创建的 IIFE window.obj
。
我观察到两者都是window.obj
被创建和 TypeError
被抛出的,这对我来说没有意义。
笔记:
"use strict"
在“以防万一”的情况下,该片段的工作方式类似,没有它;- 该片段在浏览器(Chrome 80.0)和 Node.js(v13.3)中的工作方式相同;
- 在运行此代码段之前
window.obj
(或global.obj
在节点中)对象不存在;
javascript - 当我们使用模板文字时,`use strict` 不起作用
如果我use strict
用反引号/模板文字括起来,则“使用严格”不会按预期工作。你能分享一下背后的原因吗?是否有任何类似的异常声明模板文字无法按预期工作?
javascript - “使用严格”在使用 Visual Studio Code 的 ES6 上不起作用
在"use strict"
模式中,this
函数中应该是[object Window]
而不是在常规模式下调用函数的对象。但是当我试图证明概念时,它不起作用,我想知道 Visual Studio Code 中的 ES6 扩展有什么问题,但我不知道如何解决。有人能帮我吗?:| 这是我用来测试的代码"use strict"
:
javascript - Jest helper-module-transforms 无法读取未定义的属性“值”
我正在尝试运行 jest 来对我的 es6 模块进行单元测试。尝试运行测试用例时出现以下错误:
错误所在行的代码
这里的directive.value 是未定义的。
知道如何解决这个问题吗?在运行之前是否需要设置一些环境或配置,以便directive.value.value 为“使用严格”。我在上面的行上通过硬编码return true
进行了测试,测试用例完美地工作,没有任何错误。
我的 package.json 有以下内容:
javascript - 我在 JS 中隐式启用了“使用严格”模式
事实证明我启用了“使用严格”,但我不知道为什么......
这段代码返回给我true
,我在一个纯.js
文件中测试它,没有依赖关系或任何东西。也许扩展可能会干扰?
编辑: 好的,我意识到它在严格模式下运行,因为我使用的是 ES6 模块
<script type="module" src="main.js" defer ></script>
不知道每个 ES6 模块都在严格模式下运行
我应该回答我自己的问题还是像这样编辑它可以吗?抱歉,我是新来这里提问的