JavaScript学习笔记
JavaScript(一)语言基础
1 .var和let
- 在函数内部定义var为局部变量,如果省略var则是全局变量
- let声明的范围是块作用域,而var声明的范围是函数作用域,let作用域仅限于该块内部
- 块作用域是函数作用域的子集,因此适用于var的作用域限制也会适用于let作用域
- var声明的变量会自动提升到函数作用域的顶部,let声明的作用域不会再声明中被提升
- let在全局作用域中声明的变量不会变成为window对象的属性,var声明的变量则会
- for循环中var变量会渗透到循环体内部,let变量作用域仅限于循环体内部
2.const
- const的行为与let基本相同,唯一区别是它声明变量的同时必须初始化变量
- 尝试修改const声明的变量会导致运行错误
- 不能用const来声明迭代变量
- 使用const声明可以让浏览器运行时强制保持变量不变
- 优先使用const变量,只在提前知道未来会有修改时再使用let
数据类型
在 ECMAScript 规范中,共定义了 7 种数据类型
基本类型:String、Number、Boolean、Symbol、Undefined、Null
引用类型:Object
- undefined
声明变量却没有初始化
- Null空值
null值表示一个空对象指针
定义将来要保存对象值的变量时用null初始化,而不用其他值
typeof传一个null值会返回object
操作符(==)比较null和undefined会返回true
- Boolean 布尔值
包括true和false
- Number 数值型
包括整型和浮点型
转化为整型parseInt()
转化为浮点型parseFloat()
- string 字符串型
字符串是不可变,意思是一旦创建不可修改
要修改某个变量的字符串值,必须先销毁原始的字符串值
转换成字符串为tostring()(除null值和undefined值)
- symbol 符号
ES6新增数据类型
符号是原始值,且符号实例是唯一不可变的
符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突危险。
符号没有字面量语法,这也是他们发挥作用的关键
- object 类型
一组数据和功能的集合
通过创建object类型的实例来创建自己的对象
typeof操作符
对于基本类型,除 null 以外,均可以返回正确的结果。
对于引用类型,除 function 以外,一律返回 object 类型。
对于 null ,返回 object 类型。
对于 function 返回 function 类型。
instanceof
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。 在这里需要特别注意的是:instanceof 检测的是原型
instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。