js高级程序设计(4/5章节)

1.对执行环境的理解

javascript 复制代码
 执行环境分为局部环境和全局环境,这个是一个线性的作用域链,全局环境位于链的末尾,当前环境位于链的开始。比如说在函数中嵌套函数,内层函数的环境就会处在作用域链的开始,如果要访问外层函数的变量对象,作用域会沿着该链向上搜索要访问的变量对象,直到找到window对象(全局对象)。总结一句话:在局部环境中可以访问全局环境中的变量对象,颠倒过来则不成立。
 

2.if和for中的局部变量

复制代码
由于JavaScript中没有块级作用域这一概念,所以在像if和for循环语句中定义的局部变量,在执行完这些代码后定义的局部变量并不会立即销毁,而是保存在当前的作用域中,即在if和for循环之外仍然可以访问这些局部变量。

3.对于垃圾回收机制的简单认识

vbnet 复制代码
 在执行环境中,当变量不在使用时,可以通过'标记清除'的策略进行垃圾回收,给这些白能量加上标签,在垃圾收集器运行的时候,销毁它的值,释放其占用的内存,这样来提高网络的性能,防止因为内存占用过多导致的系统性能下降甚至崩溃。
 还有一种是'引用计数'的垃圾回收机制策略,这种策略会导致循环计数,由于对这个的理解不是太清楚,只是看到在互相引用时,回导致计数值永远不会为0,也就是说永远不可能回收其内存,这种方法目前已不被使用。
 

4.创建对象的三种方式

javascript 复制代码
(1)使用new关键字加上Object构造函数进行创建,再通过打点去创建,如:var obj = new Object(); obj.name = 'cs';
(2)通过字面量的方法进行创建,如:var obj = {name: 'cs'}
(3)可以通过一个空的对象字面量,再通过打点去创建,如:var obj = {}; obj.name = 'cs';
 总结:在后两种以字面量进行创建对象的同时,并不会再去调用Object的构造函数。

5.获取对象的属性值得两种方式

css 复制代码
(1)可以通过打点方式获取,但是打点后面的属性名不能是数字
(2)可以通过'[]'方式去获取属性的值,这里面可以放变量,或者字符串的属性名,并且变量的值可以为数字或者其它,它使用的扩展性更强,一般很少使用。

6.创建数组的两种方式

javascript 复制代码
(1)可以通过new关键字,并且调用Array的构造函数进行创建,如:var arr = new Array();
(2)可以通过字面量的方式进行创建,如:var arr = [];这种创建方式并不会去调用Array的构造函数

7.对数组length属性的认识

css 复制代码
 针对看到的length属性的特点,它不仅仅可以计算数组的长度,还可以对数组的元素在数组的末尾进行移除或者增加。比如数组的长度为3,即var arr = [1, 2, 3];可以通过设置数组的属性length,arr.length = 2;这样再去访问arr[3]的时候就会变为undefined。同样如果对之前的数组长度设置为arr.length = 100;那么arr[3]到arr[99]都是undefined。
 

8.检测数组类型的方式

javascript 复制代码
 (1)使用instanceof操作符,如:a instanceof Array会返回布尔值,但是他有个局限,就是用在单一的全局执行环境中,如果一个网页上有个框架,那么可能就会有多个全局执行环境,那么这时就会有多个不同的Array构造函数,就不适用了。
 (2)对于有多个全局执行环境和构造函数而言,可以使用Array.isArray(a)来判断a的值是不是数组,它的返回结果也是布尔值。
 

9.为数组添加和移除新的元素

scss 复制代码
 (1)push()和pop(),这两个方法是从数组的末尾操作数组元素,push()可以传入多个值,返回的时传入参数之后的数组长度,pop返回的是移除数组的那个元素。
 (2)unshift()和shift(),这是在数组的开头进行操作数组元素的方法,同样,unshift()也可以传入多个参数,返回的是传入参数之后的长度,shift()是从数组的开头移除数组元素,返回的是移除的元素。
相关推荐
paopaokaka_luck2 小时前
基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
前端·javascript·vue.js·spring boot·后端·小程序·uni-app
Ares-Wang5 小时前
JavaScript》》JS》 Var、Let、Const 大总结
开发语言·前端·javascript
SY_FC6 小时前
uniapp input 聚焦时键盘弹起滚动到对应的部分
javascript·vue.js·elementui
渣渣盟8 小时前
JavaScript核心概念全解析
开发语言·javascript·es6
Carlos_sam8 小时前
OpenLayers:ol-wind之渲染风场图全解析
前端·javascript
拾光拾趣录9 小时前
闭包:从“变量怎么还没死”到写出真正健壮的模块
前端·javascript
拾光拾趣录9 小时前
for..in 和 Object.keys 的区别:从“遍历对象属性的坑”说起
前端·javascript
遂心_10 小时前
深入解析前后端分离中的 /api 设计:从路由到代理的完整指南
前端·javascript·api
@大迁世界10 小时前
第7章 React性能优化核心
前端·javascript·react.js·性能优化·前端框架
DownToEarth11 小时前
H5实现获取当前定位
javascript