这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
是不是......
var obj = new Object();
obj.function1 = function(){
//code
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西?
我在Firefox和Chrome Dev Console中输入了这个表达式,我想知道为什么它是有效的JavaScript:
var x = { a (b) {} };
console.log(x);
Run Code Online (Sandbox Code Playgroud)
x然后将其设置为具有属性"a"的对象,该属性包含具有参数标识符"b"的名为"a"的函数.这个有效的JavaScript语法怎么样?"a"后冒号丢失,我不理解函数定义.
我开始学习Vue.js和ECMA6语法,我在教程中看到了这一点:
methods: {
someMethod: function() {
console.log(this) // this works
}
}
Run Code Online (Sandbox Code Playgroud)
然后我认为语法可能是:
methods: {
someMethod: () => {
console.log(this) // this undefined
}
}
Run Code Online (Sandbox Code Playgroud)
但这有效:
methods: {
someMethod () {
console.log(this) // this works
}
}
Run Code Online (Sandbox Code Playgroud)
可以解释差异和ECMA5的语法吗?
ES6引入了一种简写符号来初始化具有函数和属性的对象.
// ES6 shorthand notation
const obj1 = {
a(b) {
console.log("ES6: obj1");
}
};
// ES5
var obj2 = {
a: function a(b) {
console.log("ES5: obj2");
}
};
obj2.a();
obj1.a();
new obj2.a();
new obj1.a();Run Code Online (Sandbox Code Playgroud)
但是,正如您所看到的,这些不同的符号表现不同.如果我new obj1.a()在浏览器中(测试过的Chrome和Firefox),我会得到一个TypeError: obj1.a is not a constructor.new obj2.a()表现完全正常.
这里发生了什么?有没有人有解释,和/或文档/规范的链接?
当我在javascript控制台中键入此代码时,这不是通过错误,而是运行.
var a = {
b:"123",
update(){
console.log("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,update()没有函数关键字,当我检查对象的属性时a,我得到:
b: "123"
update: function ()
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
什么是javascript实际上在这里做?
我很好奇以下两种在Javascript中声明变量函数的方法.下面两个函数声明之间的区别是什么?两者似乎都有效.使用一个比另一个有任何缺点吗?在查看调试器时,它们的构造似乎略有不同.
另外,我相当肯定第一种方法被称为"对象文字符号".第二种方法有正式名称吗?
var myVar = {
testProperty: 'testProperty',
// Object literal notation?
testFunc: function()
{
console.log('testFunc called');
},
// What's this called? 'Named function declaration'?
testFunc2()
{
console.log('testFunc2 called');
}
}
// Both work...
myVar.testFunc();
myVar.testFunc2();
Run Code Online (Sandbox Code Playgroud) 不小心写了如下代码,
var x = {hai:10,test(){ alert("I am alive")}};
x.test(); //alerting the value
Run Code Online (Sandbox Code Playgroud)
它工作正常,我想知道这段代码是如何工作的?因为它以前被认为是无效的语法。而且我知道,在 中ECMAscript 6,已经引入了分配属性的简写。
例子:
var x = 5, y = {x}; // is as same as var x=5,y={x:x};
Run Code Online (Sandbox Code Playgroud)
但我不确定函数定义。任何人都可以用文档中的证据来解释它吗?