Che*_*eso 97 javascript jslint strict jshint
我认为这可能是使用此关键字和显示模块模式的严格违规的重复
我有这个代码:
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()
然后引用实例,不知何故不合适?
这被认为是不好的风格吗?
Dom*_*nic 124
JSHint说"可能严格违规",因为你在this
内部使用的东西,据他所知,不是一种方法.
在非严格模式下,调用gotoPage(5)
将绑定this
到全局对象(window
在浏览器中).在严格模式下,this
会undefined
的,你会惹上麻烦.
据推测,您的意思是使用绑定this
上下文调用此函数,例如gotoPage.bind(myObj)(5)
或gotoPage.call(myObj, 5)
.如果是这样,您可以忽略JSHint,因为您不会生成任何错误.但是,它告诉你,你的代码对于阅读它的人来说并不清楚,因为使用this
内部显然不是一种方法的东西是相当混乱的.简单地将对象作为参数传递会更好:
function gotoPage(sorter, s) {
if (s <= sorter.d && s > 0) {
sorter.g = s;
sorter.page((s - 1) * sorter.p.size);
}
}
function pageChange(event, sorter) {
var dd = event.currentTarget;
gotoPage(sorter, dd[dd.selectedIndex].value);
}
Run Code Online (Sandbox Code Playgroud)
ame*_*hes 93
我已经有了这个消息,这个函数不是以大写字母开头的.
"use strict";
// ---> strict violation
function something() {
this.test = "";
}
// ---> just fine (note the capital S in Something)
function Something() {
this.test = "";
}
Run Code Online (Sandbox Code Playgroud)
如果将函数声明为变量而不是使用标准函数声明,则jshint不会将此标记为严格违规.所以你可以做以下事情 -
var gotoPage = function (s){
if(s<=this.d&&s>0){this.g=s; this.page((s-1)*this.p.size);}
};
var pageChange = function (event, sorter) {
var dd = event.currentTarget;
gotoPage.call(sorter, dd[dd.selectedIndex].value);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50800 次 |
最近记录: |