前端大杂烩之JS(五)

15. 举例说明一个匿名函数的典型用例

最常见的用法

(function() { 
    alert('water'); 
})();

带参数

(function(o) { 
    alert(o); 
})('water');

链式调用

(function(o) { 
    alert(o); 
    return arguments.callee; 
})('water')('down');

16. 指出JS的宿主对象和原生对象的区别,为什么扩展JS内置对象不是好的做法?有哪些内置对象和内置函数?

原生对象:也称为本地对象,独立于宿主环境的ECMAScript实现的对象。

宿主对象:ECMAScript官方未定义的对象都属于宿主对象。

总结:本地对象就是ECMAScript中定义好的对象,如String、Date等,内置对象是本地对象中比较特殊的一种,它不用实例化,包括Global和Math,宿主对象就是BOM、DOM和自己定义的对象。

扩展JS内置对象会产生比全局变量更大的污染。

内置对象

  包含:Global和Math。
  ECMAScript5中增添了JSON这个存在于全局的内置对象。

内置函数

  1. 常规函数
  2. 数组函数
  3. 日期函数
  4. 数学函数
  5. 字符串函数

17. document load和document DOMContentLoaded两个事件的区别

DOM文档加载的步骤为

  • 解析HTML结构。
  • 加载外部脚本和样式表文件。
  • 解析并执行脚本代码。
  • DOM树构建完成。//DOMContentLoaded
  • 加载图片等外部文件。
  • 页面加载完毕。//load

 1.当 onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。

 2.当 DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。

18. === 和 ==

双等号==

 (1)如果两个值类型相同,再进行三个等号(===)的比较。

 (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:

   1)如果一个是null,一个是undefined,那么相等。

   2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较。

三等号===

 (1)如果类型不同,就一定不相等。

 (2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)

 (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。

 (4)如果两个值都是true,或是false,那么相等。

 (5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等。

 (6)如果两个值都是null,或是undefined,那么相等。

19. 原生事件绑定(跨浏览器),dom0和dom2的区别?

0级DOM

  分为2个:
       一是在标签内写onclick事件

       二是在JS写onlicke=function(){}函数     
2级DOM

  只有一个:监听方法,原生有两个方法用来添加和移除事件处理程序:addEventListener()和removeEventListener()。

区别:如果定义了两个dom事件,dom0级事件会覆盖,dom2不会覆盖,会依次执行,dom0和dom2可以共存,不互相覆盖,但是dom0之间依然会覆盖。

猜你喜欢

转载自blog.csdn.net/xuyuexiong/article/details/80668550
今日推荐