zoukankan      html  css  js  c++  java
  • 比较运算符in/instanceof/typeof 逻辑表达式||/&&

    1.比较运算符in

        in运算符希望它的左侧操作数是一个字符串可以转换为字符串,希望它的右操作数是一个对象

        如果右侧的对象拥有一个名为左侧操作数值的属性名,那么表达式返回true,

    eg:var arr = {x:1,y:2};

        "x" in arr  ==>true

        "toString" in arr ==>对象继承了toString()方法

      var data = [1,2,3];

        "0" in data ===>true

        3 in data ===>false 数组的下标是以0开始的,下标只到2

    2.比较运算符instanceof

        instanceof运算符希望左侧操作数是一个对象,右操作数标识对象的类

        如果左侧的对象是右侧类的实例则返回true,js中对象的类是通过初始化他们的构造函数来定义的

      var a = [];

      function f(){};

      var o = new f();

      o.constructor == f; o.__proto__.constructor == f; //true

      f instanceof Function;//true

      f instanceof Object;//true

      a instanceof Array;//true

    3.typeof运算符

      typeof是一元运算符,放在其单个操作数前面,操作数可以是任意类型,返回值为表示操作数类型的一个字符串,

      任意值在typeof运算后的返回值

    x typeof x||typeof(x)
    undefined "undefined"
    null "object"
    true或false "boolean"
    任意数字或NaN "number"
    任意字符串 "string"
    任意函数 "function"
    任意内置对象(非函数) "object"
    任意宿主对象 "由编译器各自实现的字符串"

    4.逻辑表达式

      4.1 && 表达式

        1.当操作数都是布尔值的时候,"&&"对两个值执行布尔与(and)操作,只有在第一个操作和第二个操作都是true的时候,它才返回true

        2."&&"可以对假值(false、null、undefined、0、-0、NaN、"")和真值(除假值外的都是真值)进行布尔与(and)操作,

         先会对"&&"的左侧进行操作,如果左侧是假值,整个表达式肯定也是假值,因此这个表达式就简单的返回左侧的这个值,不会对右侧计算,

           反之如果左侧是真值,则整个表达式的计算结果依赖于右侧,右侧是真值这个结果就是真值,否则就是假值,并返回右侧的值作为整个表达式的结果

          "&&"的这种特性称为"短路",也经常利用这种特性来有条件的执行代码

        eg: if(a==b) start();

          (a==b) start();//同上

        一般当"&&"的右侧有副作用是要小心如(赋值、递增、递减等),因为这些操作的执行与否都依赖与"&&"的左侧   false&&a++(a++就不会执行)

      4.2 ||表达式

        "||"对两个操作做 布尔或(or)运算,只要有一个操作时真值,则返回真值,当且仅当所有操作都是假值是才会返回假值;

         先会对"||"的左侧进行操作,如果左侧是真值,整个表达式肯定也是真值,因此这个表达式就简单的返回左侧的这个值,不会对右侧计算,

           反之如果左侧是假值,则整个表达式的计算结果依赖于右侧,右侧是真值这个结果就是真值,否则就是假值,并返回右侧的值作为整个表达式的结果

  • 相关阅读:
    基于51单片机的Uart串口通信协议
    基于STM32F103和Cube的输入捕获例程
    基于STM32F429和HAL库的CAN收发例程
    基于STM32F429的TFT0.96屏幕驱动
    基于STM32F429和Cube的ov2640程序
    基于STM32F429和Cube的主从定时器多通道输出固定个数的PWM波形
    基于STM32F429,Cubemx的SAI音频播放实验
    基于STM32F429的内存管理
    基于STM32F429,Cubemx的SDHC卡的基本Fatfs文件移植
    基于STM32F429的ADS1115驱动程序
  • 原文地址:https://www.cnblogs.com/sunnie-cc/p/6907962.html
Copyright © 2011-2022 走看看