js 变量、数据类型、作用域、内置对象使用整理
js 变量、数据类型、作用域整理
一、Js 知识体系
JS分为三部分:
1.ECMAScript标准 js基本语法
2.DOM 文档对象模型 DOM提供了方法操作DOM树上的节点
3.BOM 浏览器对象模型 通过BOM可以 获得屏幕分辨率 控制浏览器跳转 弹出框
更多参考:
BOM中的顶级对象就是window,DOM中的顶级对象是document: JavaScript Window对象 整理
document是window的一个子对象。
window.onload(){}
setInterval() clearInterval()
setTimeout() clearTimeout()
Location 对象
DOM对象: HTML DOM / JavaScript DOM 简介 和整理
二、Js 数据类型
变量声明:
1. var:可以声明全局或局部作用域的变量。如果在函数内部没有用var声明,该变量会成为全局变量 2. let:用于声明块级作用域的变量,即在一对花括号{}内有效。 3. const:用于声明块级作用域的只读变量,即其值被设置后无法更改。
1.基本数据类型
number / string / boolean / undefined / null (可使用 typeof方法 来判断基础对象类型)
2.引用数据类型
function / object
其中需要注意的是:
引用数据类型会开辟出堆内存,它们指向的是 内存地址。
字符串 之间用 '+' 会拼接字符串,如果其他类型数据和字符串拼接,会被转换为字符串,这其中涉及到变量的隐式转换
类型转换:
数字类型转换:
parseInt() / parseFloat() / Number()
总结:想要转整数用parseInt(),想要转小数用parseFloat(),想要转数字:Number();要比上面的两种方式严格。
其他类型转换:
.toString() / String() / Boolean()
补充:
NaN 不是一个数字,或者不是数字与数字的计算就会得到 NaN (isNaN() 判断一个值是不是 NaN)
! 表示非, !false == true 的结果为true
操作符:
算数运算符:+ - * / %
算数运算表达式:由算数运算符连接起来的表达式
一元运算符:++ --
二元操作符: && ||
三元操作符: 条件?结果1 : 结果2
复合运算符: += -= *= /= %=
复合运算表达式:由复合运算符连接起来的表达式
流程控制:
if(){ } else if(){ }else{ }
switch(){ case :;default: ; }
while(){ } / do{ }while() / for( ; ; ){ } /for in
其中:
break 用来取消后续循环,continue 用来取消本次循环。
switch中的条件判断 使用的是严格模式的全等于。
三、Js 内置对象
实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法
静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的)
Array 创建方式有两种: 可以直接通过字面量创建 / 通过构造函数进行创建 : var a =[] / var a = new Array()
Math 对象 :
Date 对象
String 对象
字符串可以看作是由很多字符组成的数组,字符串有不可变的特性,字符串的值之所以看起来是改变的,那是因为指向改变了,并不是真的值改变了。
JSON 对象
四、Js 作用域
作用域:
分为全局作用域和局部作用域,根据所在的作用域不同,变量又分为全局变量和局部变量。
其中还有块级作用域,被'{ }'包裹就可以看成一个块,其实的变量定义,使用var 定义可以被外部使用, 使用 const、let 不可以被外部使用。
局部变量在函数作用域销毁时,就会被释放,而全局变量一旦被创建,就不会被释放,除非页面关闭(但是隐式全局变量可以被销毁,没有使用var声明的全局变量)。
在所有作用域创建的时候,js引擎会有一个处理,预解释,它所做的事,就是提前把所有的变量声明了,所有的函数声明并定义了(所以你可以在定义函数之前来调用这个函数)。
预解释中的变量提升,只会提升到当前作用域的最前面,而不是其他作用域。
预解析会分段(多对的script标签中函数重名,预解析的时候不会冲突)。
全局作用域,window:JavaScript Window对象 整理