null,undefined的区别

1、undefined表示不存在这个值。

2、undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回undefined

3、例如变量被声明了,但没有赋值时,就等于undefined

4、null表示—个对象被定义了,值为“空值”

5、null :是一个对象(空对象,没有任何属性和方法)

6、例如作为函数的参数,表示该函数的参数不是对象;

7、在验证null时,一定要使用===,因为==无法分别null和undefined

js延迟加载的方式

defer和async、动态创建DOM方式(用得最多)、按需异步载入js

同步和异步的区别

1、同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下—步操作

2、异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容

渐进增强和优雅降级

1、渐进增强︰针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。

2、优雅降级︰一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

defer和async

1、defer并行加载js文件,会按照页面上script标签的顺序执行

2、async并行加载js文件,下载完成立即执行,不会按照页面上script标签的顺序执行

严格模式的限制

1、变量必须声明后再使用

2、函数的参数不能有同名属性,否则报错

3、不能使用with语句

4、禁止this指向全局对象

attribute和property的区别

1、attribute是dom元素在文档中作为html标签拥有的属性;

2、property就是dom元素在js中作为对象拥有的属性。

3、对于html的标准属性来说,attribute和property是同步的,是会自动更新的

4、但是对于自定义的属性来说,他们是不同步的

ES6

1、新增模板字符串(为JavaScript提供了简单的字符串插值功能)

2、箭头函数

3、for-of(用来遍历数据—例如数组中的值。)

4、arguments对象可被不定参数和默认参数完美代替。

5、ES6将promise对象纳入规范,提供了原生的Promise对象。

6、增加了let和const命令,用来声明变量。

7、增加了块级作用域。

8、let命令实际上就增加了块级作用域

9、还有就是引入module模块的概念

判断数据类型

1、typeof返回的类型都是字符串形式,可以判断function的类型;在判断除object类型的对象时比较方便。

2、判断已知对象类型的方法:instanceof,后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。

异步编程

方法1

1、回调函数,优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护,各个部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定步个回调函数。

方法2

1、时间监听,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“去耦合”(Decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。

方法3

发布/订阅,性质与“事件监听”类似,但是明显优于后者。

方法4

1、Promises对象,是CommonJS工作组提出的一种规范,目的是为异步编程提供统—接口。

2、简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。

事件流

从页面中接收事件的顺序。也就是说当一个事件产生时,这个事件的传播过程,就是事件流。

IE中的事件流叫事件冒泡;

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: JavaScriptJava