这是一系列关于JavaScript中语法的问题.这也是社区Wiki,因此邀请每个人参与维护此列表.
Stack Overflow不允许搜索特定字符.因此,在搜索运算符和其他语法标记时,很难找到许多关于运算符和其他语法标记的问题.这也使得关闭重复更加困难.以下列表是为了解决此问题.
主要思想是在Stack Overflow上链接现有问题,因此我们更容易引用它们,而不是复制ECMAScript规范中的内容.
此外,这是PHP符号引用的公然副本.我们需要一个JS.
请帮忙.编辑并添加指向其他运算符/语法参考的链接,或者如果您无法在特定语法上找到好的问题/答案,请添加此问题的答案并将其链接
既然可以这样做:
var x = 'foo', y = 'foo';
Run Code Online (Sandbox Code Playgroud)
这也有可能吗?
var x, y = 'foo';
Run Code Online (Sandbox Code Playgroud)
我尝试过,但x变得不确定.
我知道这似乎是一个愚蠢或多余的问题,但如果我对某些事情感到好奇,为什么不问?你也可能想知道为什么我需要两个变量在范围内等于相同的东西.这不是问题的关键.我只是好奇.
在使用缩小的Jquery时,我注意到多个用逗号连接的语句.
例如
event.preventDefault();
event.stopPropagation();
jQuery.event.trigger( event, data, this[0] );
return event.result;
Run Code Online (Sandbox Code Playgroud)
缩小为:
c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result
Run Code Online (Sandbox Code Playgroud)
我确实看到了一个类似的问题:JavaScript变量定义:Commas vs.Semicolons
但在这种情况下,显然没有性能优势或字符减少.
我可以假设这只是缩小脚本的选择吗?
首先使用分号是不是更安全..并且防止在返回语句的情况下避免串联逗号的逻辑开销.
我一直在为jQuery"jQueryLog"开发一个插件,以便调试链选择器和返回值.如果你想查看它,你可以在这里做
这已经是第二个版本了.第一个版本实际上是一个编辑过的jQuery,在做这个时我不得不阅读jQuery来了解内部的工作原理.问题来自那里:
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// A central reference to the root jQuery(document)
rootjQuery,
// A simple way to check for HTML strings or ID strings
// Prioritize #id over <tag> …
Run Code Online (Sandbox Code Playgroud) 我刚刚看到以下代码:
function showMatch(str, reg) {
var res = [], matches
while(true) {
matches = reg.exec(str)
if (matches === null) break
res.push(matches[0])
if (!reg.global) break
alert(res)
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释第二行吗?是否
var res = [], matches
Run Code Online (Sandbox Code Playgroud)
等于
var res=[]; res=matches
Run Code Online (Sandbox Code Playgroud)
要么
var res=[]; var matches=[]
Run Code Online (Sandbox Code Playgroud)
?
我猜第二个答案是对的吗?我发现这有点令人困惑......
这是从jQuery源代码(1.7.1)开始的摘录:
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
},
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
// ...continues...
// [[Class]] -> type pairs
class2type = {};
Run Code Online (Sandbox Code Playgroud)
代码是一系列变量赋值,全部由逗号运算符连接.据我了解逗号运算符,它会在它之前和之后计算表达式,并返回后者的值.
由于变量赋值链没有被分配给任何东西,因此让我感到震惊的是代码可以用分号代替逗号来重写,而不会改变它的运算方式.例如
// Define a local copy of jQuery
var …
Run Code Online (Sandbox Code Playgroud) Python developer here. I am using JavaScript to run the following command,
let a = [1, 2, 3];
let b , c, d = a;
console.log(b);
console.log(c);
console.log(d);
Run Code Online (Sandbox Code Playgroud)
To my surprise, b
and c
are undefined while d
is the entire a
variable. I later realize that I am meant to go let [b, c, d] = a;
, however I am just trying to understand what is happening and why they're undefined.