给出这段JavaScript代码......
var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';
var f = a || b || c || d || e;
alert(f); // 4
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下这种技术的用途(我最好的猜测是在这个问题的标题中!)?它是如何/为什么它正常工作?
我的理解是变量f将被赋予第一个变量的最近值(从左到右),该变量的值不是null或未定义,但是我没有设法找到关于这种技术的很多参考资料并且有看到它用了很多.
此外,这种技术是否特定于JavaScript?我知道在PHP中做类似的事情会导致产生f一个真正的布尔值,而不是d它自身的值.
我正在调试一些JavaScript,并不能解释这||是做什么的?
function (title, msg) {
var title = title || 'Error';
var msg = msg || 'Error on Request';
}
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个提示,为什么这个人正在使用var title = title || 'ERROR'?我有时也会在没有var声明的情况下看到它.
我看到其他地方说,
x && foo();
等于
if(x){
foo();
}
Run Code Online (Sandbox Code Playgroud)
我测试了它,他们真的做了同样的事情.
但为什么?到底是x && foo()什么?
看起来:
if (typeof a == 'undefined') {
a = 0;
}
Run Code Online (Sandbox Code Playgroud)
和
(typeof a != 'undefined') || (a = 0)
Run Code Online (Sandbox Code Playgroud)
在Javascript中具有相同的效果.
我真的很喜欢第二个,因为它很短,一行代码,但这是合法的,跨浏览器有效吗?我的意思是,jslint说它有错误.我应该无忧无虑地使用它吗?
我发现JQuery网站上的代码构造未知.经过一些格式化,它看起来像:
function (a,c) {
c==null && (c=a,a=null);
return arguments.length>0
? this.bind(b,a,c)
: this.trigger(b)
}
Run Code Online (Sandbox Code Playgroud)
该函数的第一行是什么意思?是任何技巧或标准JS代码构造?
两个相同吗?
假设你有:
var x = true;
Run Code Online (Sandbox Code Playgroud)
然后你有一个:
x && doSomething();
Run Code Online (Sandbox Code Playgroud)
要么
if(x) doSomething();
Run Code Online (Sandbox Code Playgroud)
这两种语法之间有什么不同吗?我偶然发现了一点糖吗?
javascript ×6
or-operator ×2
and-operator ×1
boolean ×1
conditional ×1
if-statement ×1
parameters ×1
syntax ×1
variables ×1