当call/apply传的第一个参数为null/undefined的时候js函数内执行的上下文对象是什么呢?

如题;在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象;call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式。而bind和call几乎没差别只是将值返回。

可是当我们将null/undefined作为值传进去的时候呢?居然得到的是window,当前js运行环境的全局对象。

这其实在es5中就有解释的:传入null/undefined的时候将执行js全局对象浏览器中是window,其他环境是global。这样就解释得通了。

 

 

参考:http://www.cnblogs.com/snandy/archive/2012/03/01/2373243.html

posted @ 2016-10-30 21:16  leung_blog  阅读(5934)  评论(0编辑  收藏  举报