Javascript这行代码是什么意思
我正在学习Javascript,但不知道为什么这一行是这样写的。有人能解释一下为什么javascript会这样编写代码吗 肉桂是什么意思 我理解上面的第一行。第二行似乎是对&&执行比较运算符,但没有将其分配给任何变量Javascript这行代码是什么意思,javascript,Javascript,我正在学习Javascript,但不知道为什么这一行是这样写的。有人能解释一下为什么javascript会这样编写代码吗 肉桂是什么意思 我理解上面的第一行。第二行似乎是对&&执行比较运算符,但没有将其分配给任何变量 var VanillaBean = function(vanilla, cinnamon) { this.vanilla = [1, "bean", vanilla ? vanilla : "Madagascar Bourbon"]; cinna
var VanillaBean = function(vanilla, cinnamon) {
this.vanilla = [1, "bean", vanilla ? vanilla : "Madagascar Bourbon"];
cinnamon && (this.cinnamon = [1, "stick", "Saigon"]); //?????
};
VanillaBean.prototype = {
heavyCream: [1, "cup", "Organic Valley"],
halfHalf: [2, "cup", "Organic Valley"],
sugar: [5/8, "cup"],
yolks: [6]
};
var vanilla = new VanillaBean("Tahitian", true);
console.dir(vanilla);
该行:
cinnamon && (this.cinnamon = [1, "stick", "Saigon"]);
相当于:
if (cinnamon) {
this.cinnamon = [1, "stick", "Saigon"];
}
逻辑和
运算符的性质有时是这样使用的,因为生成的代码比完整的if
语句短
也就是说,我个人不鼓励编写这样的代码,因为它的可读性和可维护性不如
if
语句。逻辑&&运算符是“惰性的”,它只在第一个表达式为真时才计算第二个表达式。它相当于if(肉桂){this.肉桂=[…];}
类似地,肉桂| | this.肉桂=[…]
相当于if(!肉桂){this.肉桂=[…];}
因为在计算OR时,只有在第一个表达式为false时,才需要测试(并因此执行)第二个表达式。最好从补语中理解:
(false&&anything)=false,因此不必麻烦执行第二个套件
(true | | anythis)=true,因此不必麻烦执行第二组与if(肉桂)this相同。肉桂=[…]更准确地说,不需要执行操作的第二个成员&&如果第一个不是true,因为两个都需要为true,结果才是true,这意味着,如果第一个为真,则执行第二个,如上所述。