zoukankan      html  css  js  c++  java
  • 说一说&&符

    今天添加检测代码,还得添加好几套,好蛋疼。

    为了省点事,全写在HTML的行间onclick里,为此专门琢磨了一下&&的用法。

    一般用&&(除了逻辑判断里),是为了简写if语句,比如:

    if(true) {alert(1)}
    true && alert(1)

    这俩效果是一样的,但是有return就不行了,如下:

    (function(){if(true) {return true}})() // 正常
    (function(){true && return true})()    // 报错 SyntaxError: Unexpected token return
    (function(){true && (return true)})()  // 报错 SyntaxError: Unexpected token return
    (function(){true && {return true}})()  // 报错 SyntaxError: Unexpected token true

    两个return错误,一个值错误,语法问题,这么写是不正确的,所以有return的时候,还是老老实实的if语句吧。

    还有就是有else或else if的,不能用&&,用三目或者switch都行,但是注意switch检测的时候是===全等符,只能检测是true的情况,如下:

    switch(true) {
        case 1>2:
            alert(1);
            break;
        case 1:
            alert(2);
            break;
        default:
            alert(3);
    }

    只会弹出3,1、2都不会弹出。

    然后说一下多个连写的,连续触发多个函数的,如下:

    if(true) {
        alert(1);
        alert(2);
    }
    true && alert(1),alert(2)
    true && (alert(1),alert(2))
    true && alert(1) || alert(2)

    上面四种写法都能执行,弹出1和2,有返回值,是undefined,这样下面这句话不会执行:

    true && alert(1),alert(2) && alert(3)

    只会弹出1和2,没有3。

    因为 , 这个运算符,返回的是最后一项的值,即上句代码中的 alert(2) 的返回值undefined,所以 alert(3) 没有执行,有两种改法,如下:

    true && alert(1),alert(2),true && alert(3)
    true && alert(1),alert(2) || alert(3)

    都会弹出3来。

    还有一种用法忘了说,用在赋值的时候,如下:

    true && a = 1
    true && (a = 1)

    第一种会报错 ReferenceError: Invalid left-hand side in assignment ,要加上小括号,以为前一种 = 会把左边和右边各看成一部分,这样就报错了。

    第二种则事将 (a = 1) 小括号看作一部分,然后 = 左a,右1,没有错误,并且返回1。

    最后加一句||的,和&&一样,都会将里面的函数执行掉,只不过一个是遇到是true的就停,另一个是遇到是false的就停,要稍微注意下。

    Array.prototype.map || Array.prototype.map = function(item, index, arr) {
        // blablablabla...
    };

    通常的ES5功能补全用法。

    都是自己瞎琢磨的,有不对之处还望指正!

  • 相关阅读:
    c/cpp枚举练习
    数据类型的标识
    引用变量
    cocos2dx 3.3 笔记
    希望获取到页面中所有的checkbox怎么做?
    如何判断某变量是否为数组数据类型?
    驼峰函数写法
    trim()函数
    js 获取页面可视区域宽高
    全屏滚动插件
  • 原文地址:https://www.cnblogs.com/ccforeverd/p/4146947.html
Copyright © 2011-2022 走看看