• js基础——运算符


    1、运算符:
    n++ ,++n ;在没有赋值的情况下两者一样,都是加1;
              若是赋值,运算符前置表示先加再赋值,运算符后置表示先赋值再加。
    如:var m = 10;
        var m1 = ++m;  值为11
        var m2 = m++;  
        var box = false; 布尔值会自动转换成相应数值0( false:0; true:1 )
        +box;值为1
    2、运算操作数的规则:
    1)一个操作数是布尔值,则比较之前将其转换为数值,false转换为0,true转换为1
    eg.var box = false ==0;//true
    2)一个操作数是字符串,则比较之间将其转换为数值再比较(a=97,b=98,B=66)
    eg.var box = 'a' == 'B';//false(a=97,B=66)
    3)一个操作数是对象,则先调用valueOf()或toString()方法再和返回值比较
    eg.var box = 2 == {};//false;
    4)无需任何转换的条件下,null与 undefined相等。
    5)一个操作数是NaN,则==返回false,!=返回true,且NaN与自身不等。(非数值类型会转换为NaN)
    eg.var box = 2 == NaN;//false
    6)两个操作数都是对象,则比较是否是同一个对象,若是返回true,否则返回false
    7)在全等和不等的判断上,如值和类型都相等,才返回true,否则返回false.
    3、逻辑运算符:&&(and)、||(or)、!(not) 
    3.1 && 两边都为true才返回true
    运算符两边其中之一操作数不是布尔值就遵循以下规则:
    1)第一个操作数是对象,则返回第二个操作数;
    eg.var box = 对象 && (5>1);//返回true(因为5>1为真)
    2)第二个操作数是对象,则第一个操作数返回true后才返回第二个操作数,否则直接返回false。(相当于只看第一个操作数,若为真就返回第二个操作数,若为假,第二个无论真假都返回false)
    eg. var box = (6>1) && 对象;//返回[Object].因为6>1是第一个操作数为真
        var box = (3>8) && 对象;//返回false,因为3>8是第一个操作数为假。
    3)有一个操作数是null,返回null
    eg. var box = (3>1) && null //返回null
    4)有一个操作数是undefined,则返回undefined
    eg. var box = (3>5) && undefined //返回undefined 
    3.2 || 两边只要有一边为true就返回true。
    运算符两边其中之一操作数不是布尔值就遵循以下规则:
    1)第一个操作数是对象,则返回第一个操作数
    eg.var box = 对象 || (4>1);//[Object].
    2)第一个操作数的求值结果为false,就返回第二个操作数(相当于要是第一个操作数求值结果是true,直接不对第二个操作数求值)
    eg.var box = (3>1) || (5>2);//true
       var box = (5>3)|| 对象;//true (5>3为true,直接返回true,对象直接忽略)
    3)两个操作数是null,返回null;是NaN ,就返回NaN; undefined就返回undefined
    eg.var box = undefined || undefined; //undefined;
       var box = null || null;//null
       var box = NaN || NaN; //NaN
    逻辑或用途:var box = oneObject || twoObject ;//把其中一个有效变量赋值给box
    3.3 ! not 将要运算的值转换为布尔值,然后取反
    1)操作数是一个对象,返回false;
    eg. var box = !{};//false
    2)操作数是一个空字符串,返回true;
    eg. var box = !'';//true
    3)操作数是一个非空字符串,返回false
    eg. var box = !'hello';//false
    4)操作数是数值0,返回true
    eg. var box = !0;//true (0=false)
    5)操作数是任意非0数值;返回false
    eg. var box = !8;//false
    6)操作数是null、NaN、undefined,返回true
    eg. var box = !null;//true
        var box = !undefined;//true
        var box = !NaN;//true
    7)两次逻辑非运算表示取反再取反(相当于对值进行Boolean()转型函数处理)
    eg. var box = !!false;//false
        var box = !!NaN;//false
    4、赋值运算符(等号右边的值赋值给左边的变量)
    var box = 100;
    box += 100; 相当于box = box + 100;(运算赋值)//box=200
    5、三元条件运算符
    var box = 5 > 4 ? '对':'错';//对(条件成立就取问号后面的值,不成立就取冒号后面的值)
    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    jQuery+ThinkPHP+Ajax实现即时消息提醒功能
    依赖注入(DI)
    控制反转(IoC)
    ajax以base64上传图片到django
    python 多进程、多线程、协程
    python3 实现tcp/udp局域网通信
    同源策略与跨域访问
    nginx+uwsgi阿里云ubuntu服务器上简单部署flask RESTful风格项目
    python3 实现 websocket server 解决中文乱码
    python IO 多路复用 epoll简单模型
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/10973992.html
Copyright © 2020-2023  润新知