相关疑难解决方法(0)

立即函数调用语法

有一个JSLint选项,实际上是一个好的部分,"[需要]围绕立即调用的parens,"意味着构造

(function () {

  // ...

})();
Run Code Online (Sandbox Code Playgroud)

反而需要写成

(function () {

  // ...

}());
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 任何人都可以解释为什么第二种形式可能被认为更好?它更有弹性吗?不容易出错?它比第一种形式有什么优势?


自从提出这个问题以来,我逐渐理解了在函数值和函数值之间进行清晰视觉区分的重要性.考虑立即调用的结果是赋值表达式的右侧的情况:

var someVar = (function () {

  // ...

}());
Run Code Online (Sandbox Code Playgroud)

尽管最外面的括号在语法上是不必要的,但是左括号给出了一个预先指示,即所分配的值不是函数本身,而是调用函数的结果.

这类似于Crockford关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示.

javascript syntax jslint iife

110
推荐指数
1
解决办法
4万
查看次数

如何防止javascript和html5游戏中的变量注入

我在我的网站上使用过这个html5 Snake游戏,但问题是它可以很容易被黑客攻击.

http://cssdeck.com/labs/classic-snake-game-with-html5-canvas

黑客可以注入分数并提交自己的分数.

反正有没有保护脚本内的得分变量不被客户注入?

javascript html5 code-injection

6
推荐指数
1
解决办法
679
查看次数

标签 统计

javascript ×2

code-injection ×1

html5 ×1

iife ×1

jslint ×1

syntax ×1