Taste the basic data types and characteristics of JavaScript carefully

js data type

  • number numeric type
  • string string type
  • boolean Boolean value type
  • object object
  • function function
  • undefined undefined
  • null empty
  • symbol es6only

As shown:
Insert picture description here

Type classification

  • Value type number boolean null undefined
  • Reference type object function
  • object object {}, array [], empty null,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}

Guess you like

Origin blog.csdn.net/jianleking/article/details/88587582