1:数据类型
-
7种数据类型(6种基本数据类型,1种引用数据类型)
-
Undefined
只有一个值:undefined
未初始化的变量会保存特殊值>>>: undefined
注意!!!:未声明的变量执行typeod操作符同样返回undefined值
var a
console.log(a)//undefined
console.log(typeof b)//undefined
-
Null
只有一个值:null(表示空对象指针)
因此使用typeof检测null会返回"object",undefined也派生自null,(==)比较时返回true,(===)比较返回false
var car = null
console.log(typeof car) //object
console.log(typeof undefined) //undefined
console.log(null == undefined) //true
console.log(null === undefined) //false
== 代表相同, ===代表严格相同,进行双等号比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 如果类型不同,直接就是false.
详细可看:https://zhidao.baidu.com/question/344570703.html
如果一个变量将来要保存一个对象,最好将该变量初始化为null而不是其他值。
-
Boolean
有两个字面值:true / false,
-
Number
包括了整数,浮点数,及NaN
NaN 是一个特殊数值,用于指示某个值不是数字
两个特点:
一:涉及NaN的操作都会返回NaN,
二:NaN与任何值都不相同,包括NaN本身,
-
String
js中字符串不可变,要改变某个变量保存的字符串,首先要销毁原来字符串,然后再用另一个包含新值的字符串填充该变量
-
Object
可创建对象,Object类型是所有它实例的基础,所有实例都具有Object类型下列的属性和方法。
Constructor : 一个指针,指向构造函数
hasOwnProperty(propertyname): 检查给定属性好,在当前这种实例中(不是实例的原型对象中)是否存在,
isPrototypeOf(object): 用于检查传入的对象是否是另一个对象的原型
toString():返回对象的字符串表示
valueOf(): 同上
2:变量
- js中变量是松散类型,所谓松散类型就是可以用来保存任何类型的数据。变量只充当于一个保存值的占位符
- 因此可以在修改变量值的同时,修改值的类型,但不推荐
var m=" Hi "
m=100 //有效,但不推荐,
- 变量可重复声明,后面值的替代前面的值(var可以,let不行)
var a=1
var a=2
console.log(a)//2
let b=1
let b=2//Uncaught SyntaxError: Identifier 'cat' has already been declared
console.log(b)
3:变量提升
将当前作用域的所有变量的声明提升到程序的顶部
- 如果直接使用未声明的变量的话会报错
Uncaught ReferenceError
console.log(a) // Uncaught ReferenceError: a is not defined
- 如果使用了后面声明的变量的话,不报错,输出undefined
console.log(a)//undefined
var a = 9
相当于
var a
console.log(a)
a = 9
所谓变量提升,严格来说:声明提升,初始化未提升。
,所以输出undefinedlet,const也存在变量提升,但存在暂时性死去,不可在未声明前使用