js里if判断为赋值

  • 偶然看到女朋友的代码:if(a=b){return a}
  • 很奇怪判断竟然能写比较符之外的东西,在此记录一下。。。
        let a = "";
        let b = "";
        if (a = b) {
            console.log("here 1");
        } else {
            console.log("not here 1"); // not here 1
        }

        a = 1;
        if (a = b) {
            console.log("here 2");
        } else {
            console.log("not here 2"); // not here 1
        }

        b = 1;
        if (a = b) {
            console.log("here 3"); // here 3
        } else {
            console.log("not here 3");
        }

        b = 0;
        if (a = b) {
            console.log("here 4"); 
        } else {
            console.log("not here 4"); // not here 4
        }

        b = false;
        if (a = b) {
            console.log("here 5"); 
        } else {
            console.log("not here 5"); // not here 5
        }

      // 可以看到: 当 a 被赋值 ""/0/false时并不会走到if里面
  • 她写这个判断的需求是: 当 变量b 不为空的时候才返回
总结
  1. if判断里面是可以写赋值语句的
  2. 判断过程是先赋值,之后根据 a 的值来判断是否走到if里面
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容