JavaScript 作用域,预解析以及对象

14 篇文章 0 订阅
10 篇文章 0 订阅

1. 作用域

作用域就是代码名字在某个范围内起作用和效果,目的是为了提高程序可靠性和减少命名冲突
1.1 js作用域(es6之前)
全局作用域:整个script标签,或者是一个单独的js文件
局部作用域:在函数内部
1.2 变量作用域
根据作用域不同,变量分为两种
全局变量:在全局作用域下的变量,以及在函数内部没有声明直接被赋值的变量
局部变量:在局部作用域下的变量
全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
局部变量当程序执行完毕就会销毁,节省内存
1.3 作用域链
根据内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些函数能被内部函数访问,这种结构被称为作用域链

2. JS预解析

2.1 js引擎运行js分为两步
预解析: js引擎会把js里面所有的 var,function提升到当前作用域的最前面
代码执行:按照代码书写的顺序从上往下执行
2.2 变量预解析和函数预解析
变量预解析:把所有的变量声明提升到当前作用域最前面,不提升赋值操作
函数预解析:把所有的函数声明提升到当前作用域的最前面,不调用函数

3. js对象

3.1 对象
在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象
属性:事物的特征,在对象中用属性表示
方法:事物的行为,在对象中用方法表示
3.2 创建对象三种方式
利用字面量创建对象
var 对象名 = {}
里面的属性或方法我们采用键值对的形式 键 属性名 : 值 属性值 属性或方法之间用逗号隔开
利用 new Object 创建对象
var 对象名 = new Object();
对象名.属性名/方法名 = 属性/方法;
利用构造函数构建对象
构造函数:一种特殊函数,主要用来初始化对象,总与new运算符一起使用
function 构造函数名() {
this.属性 = 值
this.方法 = function() {}
}
new 构造函数名();
注意:构造函数首字母要大写
构造函数不需要return 就可以返回结果
调用构造函数 必须使用new
只要调用一次构造函数,就会创建一个对象
3.3 使用对象
调用对象属性:对象名.属性名
对象名[‘属性名’]
调用对象方法:对象名.方法名()
3.4 new关键字的作用
在内存中创建一个新的空对象
让this指向这个新对象
执行构造函数里面的代码,给新对象添加属性和方法
返回新对象
3.5 遍历对象属性
for (变量 in 对象) {}

4. js内置对象

js中的对象分为三种,自定义对象,内置对象,浏览器对象
4.1 内置对象
js自带的一些对象,供开发者使用,并提供了一些常用的或者是最基本而必要的功能,帮助我们快速开发
常用的JS内置对象:Math,Date,Array,String
4.2 查阅文档
MDN:https://developer.mozilla.org/zh-CN
W3C
4.3 Math对象
Math数学对象不是一个构造函数,不需要new调用,直接使用里面的属性和方法即可
常用的math属性或方法
Math.PI 圆周率
Math.floor() 向下取整
Mrth.ceil() 向上取整
Math.round() 就近取整 .5往大取
Math.abs() 绝对值
Math.max()/Math.min() 最大/最小值
Math.random() 在[0,1)取随机数 在两个数之间取随机数 Math.floor(Math.random() * (max-min +1))+min
4.4 日期对象
日期对象是一个构造函数,需要使用new来调用创建我们的日期对象
使用Date时,如果没有参数,则返回当前系统的当前时间
参数常用写法
数字型
字符串型
日期格式化
getFullYear() 获取当年
getMonth() 获取当月,月份需要+1
getDate() 获取当天
getDay() 获取周几,周日返回0
getHours() 获取当前小时
getMinutes() 获取当前分钟
getSeconds() 获取当前秒钟
4.5 数组对象
创建数组对象的两种方式
字面量方式
new Array方式
instanceof运算符 用来检测是否为数组
添加删除数组元素的方法
push():末尾添加一个或多个元素
pop():删除数组最后一个元素
unshift():在数组开头添加一个或多个数组
shift():删除数组第一个元素
数组排序
reverse():颠倒数组中元素的顺序,无参数
sort():对数组进行排序
数组索引
indexOf():在数组中查找给定元素的第一个索引
lastIndexOf():在数组中最后一个的索引
数组转化字符串
toString():将数组转化为字符串,每项之间用逗号分开
join():将数组中的所有元素转化为一个字符串
4.6 字符串对象
为了方便操作基本数据类型,JS提供了三个特殊的引用类型:String,Number,Boolean
基本包装类型就是把简单数据类型包装成复杂数据类型,这样基本数据类型就有了属性和方法
字符串里面的值不可变,虽然可以改变内容,但其实地址变了,内存中开辟了一个新的内存空间
根据位置返回字符
charAt(index):返回指定位置的字符
charCode(index):获取指定位置字符的ASCII码
str[index]:获取指定位置处字符
字符串操作方法
contat():连接多个字符串
substr(start,length):从start开始,length取的个数
slice(start,end):从start开始,截取到end,取不到end
substring(start,end):从start开始,截取到end,取不到end,不接受负值
replace(‘被替换的字符’,‘替换后的字符’)
split():字符转换为数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值