Javascript if和while语句的条件部分中的赋值

Javascript if和while语句的条件部分中的赋值,javascript,jslint,Javascript,Jslint,以下引述: 赋值表达式 避免在if和while语句的条件部分进行赋值 是 if (a = b) { 正确的说法?或者是 if (a == b) { 有意的?避免不易确定为正确的构造 那么,克罗克福德的话是什么意思呢?它的意思是 if (a = b) { 实际上是一种赋值,将b的值赋值给a,这通常不是人们想要的 这段话只是告诉你要小心,只有当你真正想做的时候,你才会去做,而你通常不会这么做。通常人们想在那里做一个比较,所以 if (a == b) { 反例:如果运行以下命令,则仅当您对确认

以下引述:

赋值表达式 避免在if和while语句的条件部分进行赋值

if (a = b) {
正确的说法?或者是

if (a == b) {
有意的?避免不易确定为正确的构造

那么,克罗克福德的话是什么意思呢?

它的意思是

if (a = b) {
实际上是一种赋值,将
b
的值赋值给
a
,这通常不是人们想要的

这段话只是告诉你要小心,只有当你真正想做的时候,你才会去做,而你通常不会这么做。通常人们想在那里做一个比较,所以

if (a == b) {
反例:如果运行以下命令,则仅当您对确认弹出窗口给出OK时,它才会打印
true
,否则不会打印任何内容

如果(a=confirm('test'){console.log(a)}
这意味着

if (a = b) {
实际上是一种赋值,将
b
的值赋值给
a
,这通常不是人们想要的

这段话只是告诉你要小心,只有当你真正想做的时候,你才会去做,而你通常不会这么做。通常人们想在那里做一个比较,所以

if (a == b) {
反例:如果运行以下命令,则仅当您对确认弹出窗口给出OK时,它才会打印
true
,否则不会打印任何内容

if(a=confirm('test'){console.log(a)}
似乎是对的?试试看!因此,大多数IDE都会警告您,分配可能应该是一个比较。如果你没有这样一个虚拟世界,你需要自己发现它,这就是为什么Crockford先生试图让你意识到它


似乎是对的?试试看!因此,大多数IDE都会警告您,分配可能应该是一个比较。如果你没有这样一个虚拟世界,你需要自己发现它,这就是为什么Crockford先生试图让你意识到它。

@nurdyguy:不总是这样。试试这个:
var b=“”;var a;如果(a=b){…}
@nurdyguy:不总是这样。试试这个:
var b=“”;var a;如果(a=b){…}