仔细品味javascript基本数据类型及特性

js数据类型

  • number 数值类型
  • string 字符串类型
  • boolean 布尔值类型
  • object 对象
  • function 函数
  • undefined 未定义
  • null 空
  • symbol es6 唯一

如图:
在这里插入图片描述

类型分类

  • 值类型 number boolean null undefined
  • 引用类型 object function
  • object 对象{}、数组[]、空nullDate()
值类型
  • 按值访问
  • 值不可变

number值验证

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值验证

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值验证

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

特殊值类型验证 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

特殊值类型验证 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

特殊值类型验证 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)

引用类型
  • 按引用访问 赋值操作的是地址,而不同地址的指向可能是同一个值对象
  • 值可变 值对象改变,导致所有引用它的地址对象,值发生变化

数组array引用验证

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]

对象类型引用验证

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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值