ES5基础知识——数据类型

数据类型

数据类型
值类型
引用类型
Number
Boolean
String
Object
Function
Array
值类型
  • 每个变量都能存储值,不会相互影响,这就是值类型的特点
  • 从内存中来说,把每个值都存储在每个变量名的位置
var a = 100; // 先给 a 赋值 100
var b = a; // 再把 a 赋值给 b
a = 200; // a 重新赋值 200
console.log(b) // 100
引用类型
  • 从内存中说来,引用类型的变量只有一个,a、b指针都是指向同一个变量
  • 特点是不限制扩展属性
  • 如果扩展属性很多,会出现内存占用比较大的问题
var a = {age:20};
var b = a;
b.age = 21;
console.log(a.age); //21
typeof 运算符
  • typeof 6种类型
  • typeof 能区分4种值类型 (undefined、string、number、boolean)但无法区分引用类型,除了能区分引用类型中的function类型,无法区分其他引用类型,因为函数是很特殊的引用类型
typeof undefined // undefined
typeof 'abc' // string
typeof 123 // number
typeof true // boolean
typeof {} // object
typeof [] // object
typeof null // object
typeof console.log // function
变量计算 强制类型转换(针对值类型)
  • 字符串拼接
var a = 100 + 10 // 110
var b = 100 + '10' // '10010'发生类型转换
  • ==运算符
    ==双等计算慎用
100 == '100' //true //100被转为 '100'
0 == '' // true 0 和 '' //都被强制转换为false
null == undefined //true //null 和 undefined 被转换为false
  • if语句
var a = true
if(a){
//...
}
var b = 100
if(b){
//... 100被强制转换成true
}
var c = ''
if(c){
//... '' 被强制转换成false
}
  • 逻辑运算
console.log(10 && 0) // 0 //10被转换成true
console.log('' || 'abc') // 'abc' //'' 被转换成false
console.log(!window.abc) // true //window.abc 是undefined,undefined !之后变成了true
//判断一个变量会被当作true还是false 如下
var a = 100
console.log(!!a)// 一个!被转换为对立的布尔值,再一个!再转换回来
Q1 何时使用=== 和 ==

*除了以下情况用==,其他地方都用=== *

if(obj.a == null){
	//这里相当于obj.a === null || obj.a === undefined,简写形式
	//这是jquery源码中推荐写法
}
JS中内置函数 —— 数据封装类对象
//问题:JS中有哪些内置函数 —— 数据封装类对象 (涉及原型原型链)
Object
Array
Boolean
Number
String
Function
Date
RegExp
Error
  • 另外
Math //内置对象函数
JS按存储方式区分变量类型
//JS变量按照存储方式区分为哪些类型,并描述其特点
//值类型 分块存储在内存中 值的拷贝
var a = 10
var b = a
a = 20
console.log(b) // 10
//引用类型 共用一个内存块 为了节省内存空间 指针指向同一个内存块 不是值的拷贝
var obj1 = {x:100};
var obj2 = obj1;
obj2.x = 200;
console.log(obj1.x) //200
如何理解JSON
  • json 是对象也是数据格式
//问题: 如何理解JSON
//JSON 只不过是一个JS对象而已
JSON.stringify({a:10,b:20})//'{"a":10,"b":20}' //  对象转字符串
JSON.parse('{"a":10,"b":20}')//{a:10,b:20} //字符串转对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值