let c=(b=a)的意思是啥

jojo
  • 83

网上看到个源码,大意如下:

let a =1;
let b
let c = (b=a)

console.log(a,b,c)

求前辈翻译一下哈

回复
阅读 1.9k
3 个回答

let c=b=a=1; 连续赋值语法,每个变量的值都等于最右边的结果

如果加了括号 含义有一点不太一样

let c = (b = a); 可以认为把括号中的结果赋值给c, 问题就变成了 b = a返回的结果是多少。
一个例子

let a;
console.log(a = 1);  // 输出1,注意和  条件判断a == 1区别

再来一个复杂的例子

let a = 1;
let b;
let c = ((b = a) + 1);
console.log(a,b,c); // 输出 1 1 2

相当于es5中的

var a = 1;
var b;
var c = b = a;
console.log(a, b, c); // 相当于 var a = b = c = 1

这种语句最好不要出现在真实的代码中。
它其实等效于let c=b=a,这里需要注意区别 let c=(b==a)let c=(b===a)
后面两个最终c获取的是布尔值,第一个是数值值。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏