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

时间:2018-04-10 15:46:24

标签: javascript jslint

引用Crockford

  

分配表达式

     

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

     

UIViewController
     

正确的陈述?或是

if (a = b) {
     

意?避免使用不易确定的构造。

if (a == b) {

那么,克罗克福德的引言是什么意思?

2 个答案:

答案 0 :(得分:2)

这意味着

if (a = b) {

实际上是一项作业,将b的值分配给a,这通常不是您想要的。

那篇文章只是告诉你要注意你只有在你真正意味着它时才这样做,而你通常不这样做。通常人们想在那里进行比较,所以

if (a == b) {

反例:如果您运行以下操作,只有在您确认弹出窗口时才会打印true,否则就会打印出来。

if(a = confirm('test')) { console.log(a) }

请注意,这是一项分配,我们会在a内打印if的值。

答案 1 :(得分:0)

   var username = prompt("username");
   var password = prompt("password");

   if(username = "youdontknowme") 
     if(password = "12345678")
        alert("logged in successfully!");
好像对吗?就试一试吧!因此,大多数IDE会警告您,分配可能应该是比较。如果你没有这样的vlever IDE,你需要自己发现它,这就是为什么Crockford先生试图让你意识到它。