最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:
第1行问题1:缺少"使用严格"声明.
做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.
那么它是"use strict";什么,它意味着什么,它是否仍然相关?
当前的任何浏览器都会响应"use strict";字符串还是将来使用?
哪些解决方案实现了SO用于输入标签的相同自动完成功能?
有插件可以处理一个单词,但我还没有看到任何处理多个单词的插件.
这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
我有一个将文本映射到字母的函数:
sizeToLetterMap: function() {
return {
small_square: 's',
large_square: 'q',
thumbnail: 't',
small_240: 'm',
small_320: 'n',
medium_640: 'z',
medium_800: 'c',
large_1024: 'b',
large_1600: 'h',
large_2048: 'k',
original: 'o'
};
}
Run Code Online (Sandbox Code Playgroud)
这些字母用于创建flickr照片网址.因此,photoUrl函数接受图像对象和大小文本对象,并调用sizeToLetterMap来为该大小文本提供字母.
功能:
photoUrl(image, size_text): function () {
var size = this.sizeToLetterMap(size_text);
}
Run Code Online (Sandbox Code Playgroud)
我不认为将sizeToLetterMap作为函数进行适当的设计.我认为它更适合作为常数.如何在ReactJS中定义常量?
如果是这样,这种声明的语法是什么?
我在一个网站上读到你可以在JavaScript中创建常量变量,如:
const x = 20;
Run Code Online (Sandbox Code Playgroud)
但在另一个网站上我读到你不能.所以我现在很困惑现在是什么?
同样在Visual Studio 2010中,当我编写const它时,它会在JavaScript文件中加下划线并显示语法错误.
我想要做的是使用尽可能多的不可变变量,从而减少我的代码中的移动部件的数量.我想在必要时使用"var"和"let".
这不起作用:
function constParam(const a){
alert('You want me to '+a+'!');
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
使用ECMAScript5的Object.defineProperty功能考虑以下代码:
var sayHi = function(){ alert('hi'); };
var defineProperty = (typeof Object.defineProperty == 'function');
if (defineProperty) Object.defineProperty(Array.prototype,'sayHi',{value:sayHi});
else Array.prototype.sayHi = sayHi;
var a = [];
a.sayHi();
Run Code Online (Sandbox Code Playgroud)
这适用于Chrome和Firefox 4(如果defineProperty存在),适用于Firefox 3.6(defineProperty不存在).但是,IE8 仅部分支持defineProperty.因此,它尝试运行该Object.defineProperty方法,但随后失败(浏览器中未显示错误)并停止在页面上运行所有其他JavaScript代码.
是否有更好的方法来检测和避免IE8的破坏实施:
if (defineProperty){
try{ Object.defineProperty(Array.prototype,'sayHi',{value:sayHi}); }catch(e){};
}
if (!Array.prototype.sayHi) Array.prototype.sayHi = sayHi;
Run Code Online (Sandbox Code Playgroud)
对于好奇的人,我在我的ArraySetMath库中使用它来在那些支持它的浏览器中定义不可枚举的数组方法,并回退到旧浏览器的可枚举方法.
可能重复:
Javascript中是否有常量?
有没有办法在javascript中声明最终值的静态,以便它不能被第三方更改?
我所拥有的是文章共享应用程序,免费用户受到广告支持.我想做的是通过改变内容的存储变量来防止免费用户改变innerHTML内容.
我现在拥有的是一个计时器,它每5秒在用户网站上重新加载文章的innerHTML,并且我将重载的值存储在变量中.
但是,如果使用jsbeatify的天才探索哪个变量是删除广告的关键并改变了这一点,那么我们就会失去收入和产品的曝光率.
如何防止内部变量的改变?
这是我想出的最终结果:
<div id="specialdiv"></div>
<input type="button" value="try to change the function i to do something different" onclick="t.i = function(){alert(data.secret);}"><BR>
<input type="button" value="set function to null out of spite" onclick="t=null;">
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
e = function(){var data = { };
Object.defineProperty(data, 'secret', {
value: "Hello world!",
writable : false,
enumerable : true,
configurable : false
});this.z=function(){window.setTimeout("try{document.getElementById('specialdiv').innerHTML = '"+data.secret+"';t.i.z();}catch(err) {document.body.innerHTML=err;}",5000);}}
g = function(){};
g.prototype = new e();e=null;window.t = {}
Object.defineProperty(window.t, 'i', {
value: new g(), …Run Code Online (Sandbox Code Playgroud) javascript ×8
constants ×4
autocomplete ×1
ecmascript-5 ×1
ecmascript-6 ×1
final ×1
jquery ×1
jslint ×1
reactjs ×1
static ×1
syntax ×1
tags ×1
use-strict ×1
variables ×1