js data type
- number numeric type
- string string type
- boolean Boolean value type
- object object
- function function
- undefined undefined
- null empty
- symbol
es6
only
As shown:
Type classification
- Value type number boolean null undefined
- Reference type object function
- object object
{}
, array[]
, emptynull
,Date()
Value type
- Access by value
- Immutable value
number value verification
var num = 1
var num1 = num // 直接赋值 num1的值等于num的值
console.log('num = ', num) // 1
console.log('num1 = ', num1) // 1
num1 = 2 // 改变num1的值 不影响num的值
console.log('num = ', num) // 1
console.log('num1 = ', num1) // 2
num = 3 // 同理 改变num的值 也不影响num1的值
console.log('num = ', num) // 3
console.log('num1 = ', num1) // 2
string value verification
var str = 'jyjin'
var str1 = str // 直接赋值
console.log('str = ', str) // 'jyjin'
console.log('str1 = ', str1) // 'jyjin'
str1 = 'tom' // 改变str1的值 不影响str的值
console.log('str = ', str) // 'jyjin'
console.log('str1 = ', str1) // 'tom'
str = 'jyjin handsome!' // 同理 改变str的值 不影响str1的值
console.log('str = ', str) // 'jyjin handsome!'
console.log('str1 = ', str1) // 'tom'
boolean value verification
var bo = true
var bo1 = bo // 直接赋值 bo1值等于bo值
console.log('bo = ', bo) // true
console.log('bo1 = ', bo1) // true
bo1 = false // 改变bo1的值 不影响bo的值
console.log('bo = ', bo) // true
console.log('bo1 = ', bo1) // false
bo = false // 改变bo的值 不影响bo1
console.log('bo = ', bo) // false
console.log('bo1 =', bo1 ) // false
bo = true // 再改变bo的值 不影响bo1
console.log('bo = ', bo) // true
console.log('bo1 = ', bo1) // false
Special value type verification null
// 注意: null是'object'类型
var no = null
var no1 = no // 直接赋值 no1值等于no
console.log('no = ', no) // null
console.log('no1 = ', no1) // null
no1 = 1 // 改变no1的值 不影响no的值
console.log('no = ', no) // null
console.log('no1 = ', no1) // 1
no = 2 // 同理 改变no的值 也不影响no1
console.log('no = ', no) // 2
console.log('no1 = ', no1) // 1
Special value type verification undefined
// 注意: undefined是'undefined'类型
var no = undefined
var no1 = no // 直接赋值 no1值等于no
console.log('no = ', no) // undefined
console.log('no1 = ', no1) // undefined
no1 = 1 // 改变no1的值 不影响no的值
console.log('no = ', no) // undefined
console.log('no1 = ', no1) // 1
no = 2 // 同理 改变no的值 也不影响no1
console.log('no = ', no) // 2
console.log('no1 = ', no1) // 1
Special value type verification Date()
// 注意: Date()是'object'类型
var d = new Date()
var d1 = d // 直接赋值 d1值等于d 都是56秒
console.log('d = ', d) // Sat Mar 16 2019 00:18:56 GMT+0800 (中国标准时间)
console.log('d1 = ', d1) // Sat Mar 16 2019 00:18:56 GMT+0800 (中国标准时间)
// 1秒后 改变d1的值
setTimeout(()=>{
d1 = new Date() // 改变d1的值 不影响d的值
console.log('d = ', d) // Sat Mar 16 2019 00:18:56 GMT+0800 (中国标准时间)
console.log('d1 = ', d1) // Sat Mar 16 2019 00:18:57 GMT+0800 (中国标准时间)
}, 1000)
// 再2秒后 改变d的值
setTimeout(()=>{
d = new Date() // 同理 改变d的值 也不影响d1
console.log('d = ', d) // Sat Mar 16 2019 00:18:58 GMT+0800 (中国标准时间)
console.log('d1 = ', d1) // Sat Mar 16 2019 00:18:57 GMT+0800 (中国标准时间)
}, 2000)
Reference type
- The assignment operation by reference access is the address, and the points of different addresses may be the same value object
- The value of the variable value object changes, causing all address objects that refer to it to change in value
Array reference verification
var arr = [1, 2, 3]
var arr1 = arr // 直接复制 arr1等于arr
console.log('arr = ', arr) // [1, 2, 3]
console.log('arr1 = ', arr1) // [1, 2, 3]
arr1[0] = 2 // 改变arr1影响arr
console.log('arr = ', arr) // [2, 2, 3]
console.log('arr1 = ', arr1) // [2, 2, 3]
arr[0] = 3 // 改变arr值影响arr1
console.log('arr = ', arr) // [3, 2, 3]
console.log('arr1 = ', arr1) // [3, 2, 3]
Object type reference verification
var obj = {
name: 'jyjin',
age: 18
}
var obj1 = obj // 直接赋值 obj1的内容和obj相同
console.log('obj = ', obj) // {name: 'jyjin', age: 18}
console.log('obj1 = ', obj1) // {name: 'jyjin', age: 18}
obj1.name = 'tom' // 改变obj1的属性值 影响obj的属性值
console.log('obj = ', obj) // {name: 'tom', age: 18}
console.log('obj1 = ', obj1) // {name: 'tom', age: 18}
obj.name = 'jack' // 改变obj的属性值 同样影响obj1的值
console.log('obj = ', obj) // {name: 'jack', age: 18}
console.log('obj1 = ', obj1) // {name: 'jack', age: 18}