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中的事件流叫事件冒泡;
标签:知识点,浏览器,异步,对象,JavaScript,事件,null,页面 From: https://blog.51cto.com/u_16220922/8183775