当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
当call/apply传的第一个参数为null/undefined的时候js函数内执行的上下文对象是什么呢?的更多相关文章
- js中当call或者apply传入的第一个参数是null/undefined时,js函数内执行的上下文环境是什么?
在js中我们都知道call/apply,还有比较少用的bind;传入的第一个参数都是改变函数当前上下文对象; call/apply区别在于传的参数不同,一个是已逗号分隔字符串,一个以数组形式.而bin ...
- call和apply第一个参数为null/undefined,函数this指向全局对象
call和apply第一个参数为null/undefined,函数this指向全局对象,在浏览器中是window,在node中是global 在严格模式中(ie 6/7/8/9 除外),传入null/ ...
- js,JavaScript,a标签onclick传递参数不对,A标签调用js函数写法总结
错误示例: <a href="javascript:waterLineEdit(${goods.goods_id})" >修改 </a> <!-- 浏 ...
- call/apply的第一个参数如果为null。this指向window
call/apply是用来改变函数的作用域的,第一次参数为this,第二个参数为传输的值,例如 var a ="windowA"; var b = "windowB&qu ...
- JS的setTimeout函数第一个参数问题
setTimeout的第一个参数只能放一个无参的函数,更像放了一个函数指针在那里,如果要放带参数的话,就要拿个匿名函数包裹一下
- call_user_func — 把第一个参数作为回调函数调用
call_user_func — 把第一个参数作为回调函数调用 说明 mixed call_user_func ( callable $callback [, mixed $parameter [, ...
- js函数中的apply()、call()、bind()方法
ECMAScript中的函数是对象,因此函数也有属性和方法.每个函数都包含两个属性:length和prototype,且每个函数包含两个非继承而来的方法apply()和call().这两个方法的用途都 ...
- (转)AS3 中,Function.apply、call中第一个参数的作用;与什么时候用
http://blog.csdn.net/linjf520/article/details/8746064 大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值 ...
- IE6/7/8中parseInt第一个参数为非法八进制字符串且第二个参数不传时返回值为0
JavaScript中数字有十进制.八进制.十六进制.以"0"开头的是八进制,"0x"或"0X"开头的是十六进制. parseInt用来把字 ...
随机推荐
- BZOJ 1003 物流运输【最短路】【动态规划】
这道题数据太小啦!先枚举i,j表示从第i天到第j天不更改航线的费用. 然后直接跑最短路算法(我用的是Q版男朋友算法) 动归方程显然是f[i] = min(f[i], f[j] + cost[j+1][ ...
- 给Source Insight做个外挂系列之二--将本地代码注入到Source Insight进程
上一篇文章介绍了如何发现正在运行的“Source Insight”窗口,本篇将介绍“TabSiPlus”是如何进行代码注入的.Windows 9x以后的Windows操作系统都对进程空间进行了严格的保 ...
- Reveal - UI 分析工具
一.安装和简介 a) download url b) Reveal 使用的方法有两种: Static Library Intefration, Dynamic Library Intefration. ...
- SQL声明变量并赋值
declare @studentid int //声明一个int型变量 );//设置变量值,tclass 为任意表,classid 为表中任一字段 if(@studentid is not null) ...
- 【转】24Cxx 系列EEPROM通用程序及应用
关于I2C 学习的时候介绍得最多的就是24C02 这里存储EEPROM了,但学的时候基本只是讲讲简单的I2C 的总线数据传输而已,即使先gooogle上搜索也绝大部分这这样的文章,很少有说到如何在实际 ...
- Warning: simplexml_load_string(): Entity: line 432: parser error : EntityRef: expecting ';'
Warning: simplexml_load_string(): Entity: line 432: parser error : EntityRef: expecting ';' characte ...
- Centos6 换源
#主要是为了提高安装速度以及epel中自带源众多木有的软件. #Author wood_man #2016.06.01 v 2.0 1. 测试环境 VMware 10.0 CentOS rele ...
- 2.C语言中的关键字
1.auto 修饰局部变量,编译器默认所有局部变量都是用auto来修饰的,所以在程序中很少见到. 2.static 它作用可大了,除了可以修饰变量,还可以修饰函数,修饰变量,改变其作用域和生命周期,修 ...
- ios 三种对话框拉伸方法
- String转json
一.下载json 具体到http://www.json.org/上找Java-json下载,并把其放到项目源代码中,这样就可以引用其类对象了 转载地址:http://blog.csdn.net/tax ...