首页 > 试题广场 >

执行以下程序,输出结果为()

[单选题]
执行以下程序,输出结果为()
function a(){
  console.log(this);
} 
a.call(null);


  • document
  • null
  • window
  • a
  • undefined
C call继承,对象冒充,因为传入是null或者undefind和没传一样,所以还是全局的window
编辑于 2017-02-09 14:09:15 回复(0)
call/apply用来改变函数的执行上下文(this),它们的第一个参数thisArg是个对象,即作为函数内的this。有两种情况需要注意,传null或undefined时,将是JS执行环境的全局变量。浏览器中是window,其它环境(如node)则是global。

发表于 2022-02-12 21:36:59 回复(1)
懂了  call\apply\bind 中的thisArg参数是null、undefined 不起效果的,依然会指向外面的window.
但是在严格模式下,然是输出null或者 undefined

补充:非严格模式下,如果是a.call(1);//这种方式改变内部的this参数,会自动把1转成他对应的包装类对象,再传递内部。
严格模式下,a.call(1);//传入的是1,内部的this也会是1
编辑于 2022-03-23 07:22:20 回复(1)
在 call 方法的原理里,遇到 undefined 和 null 会指向 window。可以了解一下手写 call 方法,我面试的时候被问到过。
发表于 2022-06-29 09:31:37 回复(0)
function.call(thisArg ,args1,args2..)可以调用函数 function ,并且让函数内部的 this 指向 thisArg ,同时传递args1,args2等参数。如果函数处在非严格模式下,且 thisArg 的值为 nul 或者 undefined ,则调用时函数内部的 this 指向 window 对象。
发表于 2022-12-07 18:18:53 回复(0)
c、传null或undefined时是特殊情况,是window
发表于 2023-08-25 16:42:44 回复(0)
thisArg
可选的。在 function 函数运行时使用的 this 值。请注意,this可能不是该方法看到的实际值:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始值会被包装。
发表于 2022-09-01 21:21:53 回复(0)
如果,call指向Null或者undefine的话,默认指向window
发表于 2022-04-06 12:39:45 回复(0)
C,作用域的问题吧
发表于 2017-02-13 19:25:03 回复(0)