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()是从数组的开头移除数组元素,返回的是移除的元素。
相关推荐
刘发财1 天前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
ssshooter1 天前
看完就懂 useSyncExternalStore
前端·javascript·react.js
Live000001 天前
在鸿蒙中使用 Repeat 渲染嵌套列表,修改内层列表的一个元素,页面不会更新
前端·javascript·react native
柳杉1 天前
使用Ai从零开发智慧水利态势感知大屏(开源)
前端·javascript·数据可视化
球球pick小樱花1 天前
游戏官网前端工具库:海内外案例解析
前端·javascript·css
喝水的长颈鹿1 天前
【大白话前端 02】网页从解析到绘制的全流程
前端·javascript
用户14536981458781 天前
VersionCheck.js - 让前端版本更新变得简单优雅
前端·javascript
codingWhat1 天前
整理「祖传」代码,就是在开发脚手架?
前端·javascript·node.js
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Lee川1 天前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试