JavaScript在严格和非严格模式下,call()函数传递null或undefined的区别

Function.prototype.call()函数使用给定的this值和提供的参数来调用函数。

语法

function.call(thisArg, arg1, arg2, ...)

在非严格模式下,如果thisArg为null或者undefined,它们会被转换为全局的对象作为this的值,如Window。

非严格模式

function test(){         
     console.log(this);
 }
test.call(null); 
test.call(); 

在浏览器运行此代码,this输出都为Window

严格模式(use strict)

function test() {
  "use strict";
  console.log(this);
}
test.call(null); 
test.call(); 

在浏览器运行此代码,控制台分别输出this值为:

null
undefined

版权声明:著作权归作者所有。

相关推荐

Kotlin传递函数作为参数的方式

Kotlin传递函数作为参数,可以有:命名参数,位置参数以及在参数列表外,以lamba的形式传递。示例data class Person(val name: String,                &nb

JavaScript里null与undefined的区别与相似点

初次看,null和undefined看似是一样的,但远非如此。 本文将探讨JavaScript中null和undefined的区别和相似之处。null是什么?有两个你应该理解的null特性:null是空的或不存在的值。null必须显式赋值。将null的值赋给a示例:let a = null; console.log(a); // 输出null un

Java检查非null值有必要同时使用@NonNull和Objects.requireNonNull()吗

Java的@NonNull和Objects.requireNonNull()常常会被用来限制值为非null值,它们有什么不同呢?@NonNull在引入@NonNull之前,我们要求使用非null值时,往往需要在javadoc里做说明。编译器是没有办法对javadoc进行干预。使用注解类型@NonNull后,编译器就可以在编译时对代码做检查。这也有利于一些ide根据注解类型,对null值的代码给出提

JavaScript Array map()函数的用法及误用

Array的map()函数作用是一个数组映射为另一个数组,映射方式是以原数组的元素作为输入,使用提供的回调函数对输入元素处理,处理后返回的结果作为新数组的元素。基本语法var new_array = arr.map(function callback(currentValue, index, array) {  &nb