题目:
- JS 中使用 typeof 能得到哪些类型
- 何时使用 === ,何时使用 ==
- JS 中有哪些内置函数
- JS 变量按照存储方式区分为哪些类型,并描述其特点
- 如何理解 JSON
知识点:
- 变量类型
- 变量计算
1 变量类型
- 值类型 vs 引用内省
- typeof 运算符详解
1.1 值类型
var a = 100
var b = a
a = 200
console.log(b) // 100
1.2 引用类型
var a = {age:22}
var b = a
b.age = 20
console.log(a.age) // 20
引用类型: 对象,数组,函数
1.3 typeof 运算符
typeof undefined // undefined
typeof 'abc' // strring
typeof 123 // number
typeof true // boolean
typeof {} // object
typeof [] //object
typeof null // object
typeof console.log // function
// typeof 只能区分值类型的具体数据类型,不能区分引用类型( function暂时忽略 )
2 变量计算-强制类型转换
- 字符串拼接
- == 运算符
- if 语句
- 逻辑运算
2.1 字符串拼接
var a = 100 + 10 // 110
var b = 100 + '10' // '10010'
2.2 == 运算符
100 == '100' //true
0 == '' //true
null == undefined //true
// 0, '', null, undefined 都会转换为 false
2.3 if 语句
var a = true
if (a) {
console.log('我被执行了!') // 我被执行了!
}
var b = 100
if (b) {
console.log('我被执行了!') // 我被执行了!
}
var c = ''
if (c) {
console.log('我没有被执行了!') // 我没有被执行了!
}
// 几种 if 语句里面是 false 的情况: 0, NaN, null, '', undefined, false
2.4 逻辑运算符
console.log(10 && 0) // 0, 这里的 10 被强制类型转换为 ture
console.log(0 && 10) // 0
console.log('' || 'abc') // 'abc', ''被强制类型转换为 false
console.log('abc' || '') // 'abc'
console.log(!windonw.abc)
// 判断一个变量会被当做 ture 还是 false
var a =100
console.log(!!a)
解答:
// 问题: JS 中使用 typeof 能得到哪些类型
typeof undefined // undefined
typeof 'abc' // strring
typeof 123 // number
typeof true // boolean
typeof {} // object
typeof [] //object
typeof null // object
typeof console.log // function
// 问题:何时使用 === ,何时使用 ==
if (obj.a == null) {
// 这里相当于 obj.a === null || obj.a === undefined 的简写形式
// 这是 jQuery 源码中的推荐写法
}
// 问题:JS 中有哪些内置函数
Object
Array
Boolean
Number
String
Function
Data
RegExp
Error
// 问题:JS 变量按照存储方式区分为哪些类型,并描述其特点
// 值类型
var a = 10
var b = a
a = 11
console.log(b) // 10
// 引用类型
var obj1 = {x:100}
var obj2 = obj1
obj1.x = 200
console.log(obj2.x) // 200
值类型:传递数据时会申请一个新的空间存放变量的值
引用类型:会申请一个空间存放指向该引用类型的地址。
引用类型都可以有属性,不光是对象,函数、数组都可以
// 问题:如何理解 JSON
// JSON 不仅仅是一种数据格式,同时也是一个 JS 对象
JSON.stringify({a:10, b:20}) // 将 JSON 对象转换为字符串数据
JSON.parse('{a:10, b:20}') // 将字符串数据转换为 JSON 对象