• js 类型


    变量中加入字符串进行拼接,可以被同化为字符串。

    var a = "1";
    var b = 2;
    console.log(a + b);

    输出12

    们知道,"2"+1得到的结果其实是字符串,但是"2"-1得到的结果却是数值1,这是因为计算机自动帮我们进行了“隐式转换”。

    也就是说,-*/%这几个符号会自动进行隐式转换,会把操作数转换成数字的。例如:

    var a = "4" + 3 - 6;
    console.log(a);

    输出37

     typeof 检查一个 null 值时,会返回 object

    null 专门用来定义一个空对象

     typeof 检查一个 undefined 值时,会返回 undefined

    null == undefined--true

    null === undefined--false

    任何数据类型和 undefined 运算都是 NaN;

    任何值和 null 运算,null 可看做 0 运算。

    ['0', '1', '2'].map(parseInt) // [0, NaN, NaN]

    可以看成

    var arr = ["0","1","2"];
    arr.map((value,index,array) => parseInt(value,index));
    parseInt('0', 0); // 0 (parseInt的处理方式,这个地方item没有以"0x"或者"0X"开始,8和10这个基数由实现环境来定,ES5规定使用10来作为基数,因此这个0相当于传递了10)
    parseInt('1', 1); // NaN (因为parseInt的定义,超出了radix的界限)
    parseInt('2', 2); // NaN (虽然没有超出界限,但是二进制里面没有2,因此返回NaN)

    parseInt(stringradix);

    string: 需要转化的字符,如果不是字符串会被转换,忽视空格符。

    radix:数字2-36之前的整型。默认使用10,表示十进制。这个参数的意义是指把前面的字符看作是多少进制的数字,所谓的基数。

    Symbol具有两大特性:

    1.避免常量值重复

    const a = Symbol('a')
    const b = Symbol('a')
    a === b // false

    2.避免对象属性覆盖(向下兼容)

    function fn(o) { // {user: {id: xx, name: yy}}
      const s = Symbol()
      o[s] = 'zzz'
      ...
    }

    五大基本类型:undefined,null,String,Number,Boolean

    其储存于栈内存中,永远保存,不可改。

    变量改变的时候,是开辟新的内存空间去存储的;把旧的地址下标复原,但是数据还在。

    除了undefined,null,NaN,“”,0,false其他都为真;

    NaN谁都不相等,即使是他本身也不相等;NaN!= NaN;

    字符串作对比,如:>,<.是根据他的ASCII码去作比较的;

    &&与||

    1、&&:遇到真就往后走;直到遇到假或者走到最后就返回当前值;

    1 && 1 返回1 真
    0 && 1 返回0 假
    1 && 0 返回0 假
    0 && 0 返回0 假

    2.||:遇到假就往后走;直到遇到真或者走到最后就返回当前值;

    1 || 1 返回1 真
    0 || 1 返回1 真
    1 || 0 返回0 真
    0 || 0 返回0 假

    常用例子:var content=contnet||"window";

    原始类型:Undefined、Null、Boolean、Number、String
    引用类型:Object(object,array)

    只有一个唯一值的数据类型值分别是 undefined、null,从逻辑角度来看 null 值表示一个空对象指针,这也正是使用 typeof null 时返回 object 的原因;

    而 undefined 是在ECMA第三版才引入,目的是为了正式区分空对象指针与未初始化(赋值)的变量。

    typeof function(){} 返回了function;

    这是因为Function本身就是Object的一个子类,只不过与普通对象相比,它在内部实现了一个[[call]]方法,用来表示该对象可以被调用,

    typeof在判断一个对象时,如果对象内部包含了[[call]]方法,就会返回function。

    也就是说function就是实实在在的对象。

    Number

    var a='1a';
    typeof(Number(a)) // number
    Number(a)// NaN
    typeof (typeof(Nnumber(a)))// string
    Number(null) //0
    Number(undefined) // NaN
    Number(true) // 1
    Number(false) // 0

    typeof出来的类型名称,本质上是字符串;所以在typeof永远都显示string

    paresInt

    var a='3.99';
    ParesInt(a)// 3
    paresInt(null) // NaN
    paresInt(undefined) // NaN
    paresInt(true) // NaN
    paresInt(false) // NaN
    paresInt(NaN) // NaN
    paresInt('123abc') // 123
    paresInt('abc123') // NaN

     可以有两个参数,第一个参数为取整的数据;第二个为以什么进制转换成10进制的(2-36)位;

    isNaN

    isNaN('123') // false
    isNaN(123) // false
    isNaN(null) // false
    isNaN(undefined) // true
    isNaN('a') // true
    
    isNaN里面的值 --> Number(值) --> NaN --> bool

    Boolean

    除了undefined null NaN " " 0 false 其他都是true 

  • 相关阅读:
    Android 多线程 打地鼠游戏
    Android 线程那些事儿
    Android 服务入门
    Android+Handler+Thread 那些事儿
    Android 数据库的线程合作
    Android 数据库中的数据给到ListView
    git 修改管理
    import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包(转载)
    VC++中开发汇编语言(转)
    C struct结构体内存对齐问题
  • 原文地址:https://www.cnblogs.com/ssszjh/p/13447194.html
Copyright © 2020-2023  润新知