zoukankan      html  css  js  c++  java
  • (八)JS内置类型基础

    JS的七种内置类型
    • JS分为七种内置类型;其中内置类型又分为两大类:基本类型对象(Object);
    • 基本类型有六种:null undefined number string boolean Symbol
    • 其中js的number类型也是浮点类型的,没有整型;
    • NaN也属于number类型,并且不等于自身
    • 对象Object是引用类型,其在使用的时候会遇到深拷贝和浅拷贝的问题
    变量类型typeof判断
    • typeof 对于基本类型,除了 null 都可以显示正确的类型;null显示的是object
      • JS最初版本使用的是32位的系统;为了考虑性能使用的是低位存储变量信息;000开头代表的是对象,而null全为0,所以错误判断null为object,这个bug一直留存
    Object.prototype.toString.call(xx)		//可以用这个来获取正确的变量类型
    
    类型的转换
    转Boolean:

    除了undefined null false NaN `` 0 -0之外的所有的值都转成true,包括对象

    四则运算
    • 只有当加法运算,其中一方是String类型才会把另一方也转化成String类型
    • 其中一方是数字类型那么另外一方转化成数字类型
    • 加法运算会触发三种类型转换:
      • 将值转化成原始值
      • 转化成数字
      • 转化成字符串
    1 + '1' // '11';加法中一方为字符串,将number类型转化成字符串
    2 * '2' // 4;乘法中一方为数字将另外一方转化成数字
    [1, 2] + [2, 1] // '1,22,1'
    // [1, 2].toString() -> '1,2'
    // [2, 1].toString() -> '2,1'
    // '1,2' + '2,1' = '1,22,1'
    

    另外加法中要注意:

    'a' + + 'b' // -> "aNaN"
    // 因为 + 'b' -> NaN
    
    ==基本操作符

    undefined == undefined;	//true
    null == null;		//true
    undefined == null;		//true
    
    0 == -0;		//true
    123 == '123';		//true;返回将字符串化成number的结果
    NaN == NaN;		//false
    
    false == false;		//true
    true == true;		//true
    //若一方为Boolean则返回Number(这个boolean值) == 要比较的值的结果;Number(true)为1,Number(false)为0;例如:
    [] == false;		//true
    //如果一方为String或者Number另外一方为Object,那么返回比较object转化的结果
    
    
    
    有意思的一道题[] == ![]的结果为true解析:
    // [] 转成 true,然后取反变成 false
    [] == false
    // 根据第 8 条得出
    [] == ToNumber(false)
    [] == 0
    // 根据第 10 条得出
    ToPrimitive([]) == 0
    // [].toString() -> ''
    '' == 0
    // 根据第 6 条得出
    0 == 0 // -> true
    
  • 相关阅读:
    动态规划精讲(一)LC最长公共子序列
    0-1背包
    折线分割平面
    母牛的故事
    数塔
    70. 爬楼梯
    文件修改的两种方式
    文件处理练习
    文件处理
    购物车理解
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675335.html
Copyright © 2011-2022 走看看