美文网首页
JavaScript高程读书笔记(2)

JavaScript高程读书笔记(2)

作者: 小懒豆 | 来源:发表于2018-03-31 18:47 被阅读6次

    五、操作符

    算数操作符、位操作符、关系操作符、 相等操作符

    1. 一元操作符
      ++--:注意a++
      +,-
    2. 位操作符
      按位非(NOT)(~)、按位与(AND)(&)、按位或(OR)(|)、按位异或(XOR)(^)、左移(<<)、有符号右移(>>)、无符号右移(>>>)
    3. 布尔操作符
      非,与,或
    4. 乘性操作符
      乘、除、取模
    5. 乘性操作符
      加法、减法、
    6. 关系操作符
      小于、大于、小于等于、大于等于
      1)如果是数值,则数值比较;
      2)如果是字符串,则比较对应编码;
      3)如果一个是数值,则转换为数值;
      4)如果为一个对象,则调用valueOf()或者toString(),得到结果再根据前面规则进行比较
      5)如果一个是布尔值,先转换为数值比较
      6)与NaN比较都返回false
    7. 相等操作符
      相等和不相等先转换再比较,全等和不全等仅比较
      1)null和undefined相等
      2)都是对象情况下比较是否为同一对象
    8. 条件操作符
      ?:
    9. 赋值操作符
      右边的值赋给左侧的变量
    10. 逗号操作符
      用于赋值总是返回表达式中最后一项

    六、语句

    • switch语句使用的是全等操作符

    七、typeof和instanceof

    typeof来判断基本数据类型

    1. 第一题
      表达式是从右往左的,x由于变量提升,类型不是null,而是undefined,所以x=y=”undefined”。
     var y = 1, x = y = typeof x;
     x;//"undefined"
    
    1. 第二题
    (function f(f){
        return typeof f();//"number"
      })(function(){ return 1; });
    
    1. 第二题
      这一题考察的是this的指向。this永远指向函数执行时的上下文,而不是定义时的(ES6的箭头函数不算)。当arguments执行时,this已经指向了window对象。所以是”undefined”。
    var foo = {
        bar: function() { return this.baz; },
        baz: 1
      };
      (function(){
        return typeof arguments[0]();//"undefined"
      })(foo.bar);
    
    1. 第四题
     var foo = {
        bar: function(){ return this.baz; },
        baz: 1
      }
      typeof (f = foo.bar)();//undefined
    
    1. 第五题
    var f = (function f(){ return "1"; }, function g(){ return 2; })();
    typeof f;//"number"
    
    1. 第六题
    var x = 1;
      if (function f(){}) {
        x += typeof f;
      }
      x;//"1undefined"
    
    1. 第七题
     (function(foo){
        return typeof foo.bar;//undefined
      })({ foo: { bar: 1 } });
    

    instanceof运算符可以用来判断某个构造函数的prototype属性是否存在于另外一个要检测对象的原型链上

    相关文章

      网友评论

          本文标题:JavaScript高程读书笔记(2)

          本文链接:https://www.haomeiwen.com/subject/vfaeqftx.html