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()是从数组的开头移除数组元素,返回的是移除的元素。
相关推荐
知识分享小能手6 小时前
微信小程序入门学习教程,从入门到精通,微信小程序常用API(上)——知识点详解 + 案例实战(4)
前端·javascript·学习·微信小程序·小程序·html5·微信开放平台
蓝莓味的口香糖7 小时前
【JS】什么是单例模式
开发语言·javascript·单例模式
reembarkation9 小时前
自定义分页控件,只显示当前页码的前后N页
开发语言·前端·javascript
gerrgwg9 小时前
React Hooks入门
前端·javascript·react.js
汉字萌萌哒10 小时前
【 HTML基础知识】
前端·javascript·windows
北城以北888812 小时前
Vue--Vue基础(二)
前端·javascript·vue.js
FuckPatience13 小时前
Vue 组件定义模板,集合v-for生成界面
前端·javascript·vue.js
silent_missile16 小时前
vue3父组件和子组件之间传递数据
前端·javascript·vue.js
克里斯蒂亚诺更新17 小时前
微信小程序app.js中每30秒调用一次wx.getLocation
javascript·微信小程序·小程序
鄃鳕18 小时前
C++坑系列,C++ std::atomic 拷贝构造函数问题分析与解决方案
java·javascript·c++