我试图break在for循环中使用一个语句,但由于我在Perl代码中也使用严格的subs,我收到一个错误说:
在./final.pl第154行使用"严格潜艇"时不允许使用Bareword"break".
有没有解决方法(除了禁用严格的潜艇)?
我的代码格式如下:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我还不熟悉ECMAScript 6.我刚刚克隆了React Starter Kit repo,它使用ES6作为应用程序代码.我很惊讶地发现linter 配置为禁止出现use strict指令,我认为这是在ES6之前的JavaScript中推荐的.那有什么意义呢?
我认为这可能是使用此关键字和显示模块模式的严格违规的重复
我有这个代码:
function gotoPage(s){
if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);}
}
function pageChange(event, sorter) {
var dd = event.currentTarget;
gotoPage.call(sorter, dd[dd.selectedIndex].value);
}
Run Code Online (Sandbox Code Playgroud)
JSHINT(JSLINT)正在抱怨.它说"严格违规".对于突出显示的行:

是我使用Function.call()然后引用实例,不知何故不合适?
这被认为是不好的风格吗?
$el = array_shift($instance->find(..))
Run Code Online (Sandbox Code Playgroud)
上面的代码以某种方式报告了严格的标准警告,但这不会:
function get_arr(){
return array(1,2);
}
$el = array_shift(get_arr());
Run Code Online (Sandbox Code Playgroud)
那么它什么时候会报告警告呢?
无法获取以下内容以传递jslint/jshint
/*jshint strict: true */
var myModule = (function() {
"use strict";
var privVar = true,
pubVar = false;
function privFn() {
return this.test; // -> Strict violation.
}
function pubFn() {
this.test = 'public'; // -> Strict violation.
privFn.call(this); // -> Strict violation.
}
return {
pubVar: pubVar,
pubFn: pubFn
};
}());
myModule.pubFn();
Run Code Online (Sandbox Code Playgroud)
我理解它是由this函数声明中的使用引起的,但是我读过Crockford写的东西,他说违规是为了防止全局变量污染 - 但这里唯一的全局变量就是我明确定义的变量...... myModule.其他所有东西都保存在直接的功能范围内,我应该可以用它this来引用该模块.
任何想法如何让这种模式通过?
更新:如果我使用函数表达式而不是声明,这似乎工作,即
var pubFn = function () { ...
Run Code Online (Sandbox Code Playgroud)
我不是这种格式的粉丝,更喜欢将函数名称和命名参数更接近并且声明看起来/感觉更清晰.老实说,我不明白为什么这会引发违规行为 - 在这种模式中没有理由这样做.
我正在学习perl和python ...同时,不是我的设计,但必须要完成.
题:
在perl脚本中,我在我的txt的头部使用(见下文).
#!/usr/bin/env perl
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
对于我的python脚本,我应该做些什么吗?
严格模式编译指示在ECMAScript5中有什么范围?
"use strict";
Run Code Online (Sandbox Code Playgroud)
我想这样做(主要是因为JSLint没有抱怨它):
"use strict";
(function () {
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否会破坏其他代码.我知道我可以做到这一点,这将把pragma的范围扩展到函数...
(function () {
"use strict";
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但JSLint抱怨它(当启用"严格"JSLint选项时),因为它认为您在启用"use strict"之前正在执行代码.
这是我的问题.如果我有fileA.js:
"use strict";
// do some stuff
Run Code Online (Sandbox Code Playgroud)
和fileB.js:
eval( somecodesnippet ); // disallowed by "use strict"
Run Code Online (Sandbox Code Playgroud)
然后将它们以相同的顺序包含在我的html页面中,将pragma限定为文件,还是将pragma放到fileB中,从而阻止eval执行?
我一直在想这个,但我一直无法找到它.
使用该seq功能时,它是如何真正起作用的?在任何地方,只是解释说seq a b评估a,丢弃结果并返回b.
但是,是什么真正意味着什么?以下结果将严格评估:
foo s t = seq q (bar q t) where
q = s*t
Run Code Online (Sandbox Code Playgroud)
我的意思是,q在使用之前是否经过严格评估bar?以下是相同的:
foo s t = seq (s*t) (bar (s*t) t)
Run Code Online (Sandbox Code Playgroud)
我觉得有点难以详细说明这个功能的功能.
JavaScript并不关心你的字符串是双引号"double"还是单引号'single'.
ECMAScript 5的严格模式的每个示例都"use strict"使用双引号启用它.我可以执行以下操作(单引号):
alert(function(){
'use strict';
return !this;
}());
Run Code Online (Sandbox Code Playgroud)
如果启用了Strict模式,则返回true,否则返回false.
strict ×10
javascript ×5
ecma262 ×2
ecmascript-5 ×2
perl ×2
php ×2
break ×1
ecmascript-6 ×1
es6-modules ×1
haskell ×1
jshint ×1
jslint ×1
loops ×1
python ×1
reference ×1
scope ×1
warnings ×1