变量类型和计算

[目录]

一、JS中使用typeof能得到哪些类型?

```
typeof undefined    //undefined
typeof 'abc'        //string
typeof 123          //number
typeof true         //boolean
typeof {}           //object
typeof []           //object
typeof null         //object
typeof console.log  //function

//补充:typeof只能区分值类型的详细类型,不能区分引用类型的详细类型,但可以区分出引用类型中的函数
```

二、何时使用 === ;何时使用 ==

"="是严格运算符,""是相等运算符

  • “===”严格运算符

    • 如果两个值的类型不同。直接返回false
    • 同一类型的原始类型值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false
    • 两个符合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象(它们所指的地址是否相同)
  • “==”相等运算符

    • 相等运算符在比较相同类型的数据时,与严格相等运算符完全一样
    • 在比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较
    • 原始类型的数据会转换成数值类型再进行比较,如:字符串和布尔值都会转换拿成数值类型
    • 对象(广义上的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较
    • undefined和null与其他类型的值比较时,结果都为false,它们相互比较时结果都为true
    • 相等运算符的隐式转换,会带来一些违反直觉的结果,例如:
    '' == '0'           //false
    0 == ''             //true
    0 == '0'            //true
    
    false == 'false'    //false
    false == '0'        //true
    
    false == undefined  //false
    false == null       //false
    null == undefined   //true
    
    '\t\r\n' == 0       //true
    
    //补充:虽然一般推荐使用 === ,但是在jQuery源码中推荐的写法有“obj.a == null”,同时除了“0、NaN、''、null、undefined、false”这几个表现为false,其他的大部分都表现为true
    

三、JS中有哪些内置函数

Date:日期函数、Math:数学函数、Number、Boolean、String:字符函数、Array:数组函数、RegExp、Function、Object、齐局、事件、其他单击参考JavaScript内置函数

四、JS变量按照存储方式区分为哪些类型,并描述其特点

```
// 值类型:undefined string number Boolean
    var a = 100;
    var b = a;
    var a = 200;
    console.log(a)//200
    console.log(b)//100
// 引用类型:对象 数组 函数
    var a = {age:20}
    var b = a           //a、b指向同一个地址
    b.age = 21
    console.log(a.age)  //21
```

五、如何理解JSON

JSON只不过是一个JS对象而已,JSON (JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。

```
//字符型转字符串型
JSON.stringify({a:0,b:20})
//字符串转字符型
JSON.parse('{"a":10,"b":20}')
```
posted @ 2020-05-29 09:41  a_哆肉  阅读(149)  评论(0编辑  收藏  举报