首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么要传递给一个匿名函数:"undefined“!= typeof global?全局:“未定义”!=窗口类型&&窗口

相关·内容

分享30个你必须知道的JS基础知识

IIFE 或立即调用函数表达式、在全局范围内声明的函数、对象方法中的匿名函数和内部函数都具有指向窗口对象的默认值 this。...箭头函数表达式更适合原本使用匿名函数的情况,不能作为构造函数使用。...在箭头函数版本中,我们只需要括号 () 而不需要 return 语句,因为如果我们只有一个表达式或值返回,则箭头函数具有隐式返回。...倒数第二个示例演示了我们可以将参数传递给 IIFE 函数。 最后一个示例表明我们可以将 IIFE 的结果保存到一个变量中供以后使用。...闭包只是函数从其当前作用域、父函数作用域和全局作用域记住变量的能力。 当我们在全局范围内使用 var 关键字声明一个变量时,我们创建了一个全局变量 i。

17030

37个JavaScript基本面试问题和解答(建议收藏)

== 'undefined')); 由于a和b都在函数的封闭范围内定义,并且由于它们所在的行以var关键字开头,因此大多数JavaScript开发人员会希望typeof a和typeof b在上面的示例中都未定义...否则,我们假设它是以sum(2)(3)的形式被调用的,所以我们返回一个匿名函数,它将传递给sum()(在本例中为2)的参数和传递给匿名函数的参数(这种情况3)。...将该对象传递给Object.keys将返回一个包含这些设置键的数组(即使它们的值未定义)。 14、下面的代码将输出到控制台,为什么?...(为什么它不显示21的全局值?原因是当函数执行时,它检查是否存在本地x变量但尚未声明它,因此它不会查找全局变量。) 30、你如何克隆一个对象?...例如,使用map()时,map()的输出中的空插槽将保持为空,但未定义的插槽将使用传递给它的函数重映射: var b = [undefined];b[2] = 1;console.log(b); //

2.9K10

JavaScript数据类型浅析

isNaN() 全局函数来判断一个值是否是 NaN 值。...不能和任何Number实例混合运算,两者必须转换成同一种类型。在两种类型来回转换时小心,因为BigInt变量在转换成Number变量时可能会精度丢失。...字符串也可以是一个对象日期是一个对象数学和正则表达式也是对象数组是一个对象甚至函数也可以是对象let x1 = {}let x2 = new Object()// 基本类型的包装类 使用typeof判为.../ "object"typeof x4 // "object"Function函数是一种特殊的对象函数也是功能代码块,一个封闭区间短小的脚本,如果多次使用同一段代码,就可以把它封装成一个函数,允许在代码里随调随用...,利用函数封装来避免重复键入大量相同的内容,不过函数的真正威力在于参的能力,可以把不同的数据传递给它们,使用这些数据去完成预定的操作函数是一等公民,是对象,是值,可以存储在一个变量,数组或者对象中函数可以传递给函数

37300

JAVASCRIPT FUNCTIONS 详解

不同于其他编程语言为不同情景提供不同的函数类型,JavaScript 只为我们提供了一种涵盖所有情景(如内嵌函数匿名函数或是对象方法)的函数类型。...(typeof inner); // 'undefined' 在这个例子中,我们在全局作用域中创建了一个 outer 变量并为之赋值为 outer 函数。...执行上下文的概念对于一个在代码中不会直接面对它的前端新人来说,可能是会有一点复杂,这是可以理解的。你此时可能会问,那既然我们在编程中不会直接面对执行上下文,那我们又为什么讨论它呢?...解析器对 global 对象有其自身的内部实现方式,但依然可以通过 JavaScript 在当前窗口中自身的window对象或当前 JavaScript 解析器的 global 对象来访问到。...setName 和 setAge 函数确保我们设置的值是正确的类型

66010

金九银十: 50 个JS 必须懂的面试题为你助力

: 命名函数在定义后立即声明名称,可以使用function关键字定义: function named(){ // write code here } 问题10:是否可以将匿名函数分配给变量并将其作为参数传递给一个函数...一个匿名函数可以分配给一个变量,它也可以作为参数传递给一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数的参数类型 JS 变量arguments表示传递给函数的参数。...使用typeof运算符,可以获得传递给函数的参数类型。...在方法中,这指的是所有者对象,而在函数中,这指的是全局对象。 问题14:什么是回调 回调函数是作为参数或选项传递给某个方法的普通JS函数。它是一个函数,在另一个函数完成执行后执行,因此称为回调。...问题29:null 和 undefined 区别 undefined是基本数据类型 表示未定义 缺少的意思。

6.5K31

JavaScript深入学习this、call、apply和bind

匿名函数的this总指向Window对象(全局对象)(es5)。...全局环境中的 this 是什么 浏览器: console.log(this); //Window node: console.log(this); //global 函数里执行 全局函数执行...,如果我们把它当作一个普通函数执行,这个 this 仍然执行全局 var p2 = Person("James");//Window 匿名函数使用(this的一些坑) 匿名函数的this总指向Window...) 但为什么上面的例子中apply的第一个参数为null和Math都会得到相同的结果呢?...但是传入的参数必须是一个对象(或者参数的原始值的自动包装对象),所以我们123,"aaa",undefined都可以,但是传入一个未定义的变量是不行的,当然传入null也是可以的。

36520

50 个JS 必须懂的面试题为你助力金九银十

: 命名函数在定义后立即声明名称,可以使用function关键字定义: function named(){ // write code here } 问题10:是否可以将匿名函数分配给变量并将其作为参数传递给一个函数...一个匿名函数可以分配给一个变量,它也可以作为参数传递给一个函数。 问题11:JS中的参数对象是什么&如何获得传递给函数的参数类型 JS 变量arguments表示传递给函数的参数。...使用typeof运算符,可以获得传递给函数的参数类型。...在方法中,这指的是所有者对象,而在函数中,这指的是全局对象。 问题14:什么是回调 回调函数是作为参数或选项传递给某个方法的普通JS函数。它是一个函数,在另一个函数完成执行后执行,因此称为回调。...问题29:null 和 undefined 区别 undefined是基本数据类型 表示未定义 缺少的意思。

4.4K30

前端必备,25个最基本的JavaScript面试问题及答案

== null) && (typeof bar === "object")); // logs false 答全问题,还有其他两件事情值得注意: 首先,上述解决方案将返回 false,当 bar 是一个函数的时候...== 'undefined')); 由于 a 和 b 都定义在函数的封闭范围内,并且都始于 var关键字,大多数JavaScript开发人员期望 typeof a 和 typeof b 在上面的例子中都是...(在ECMA 5之前,在内部函数中的this 将指向全局的 window 对象;反之,因为作为ECMA 5,内部函数中的功能this 是未定义的。)...否则,我们假设它被以 sum(2)(3)这样的形式调用,所以我们返回一个匿名函数,这个匿名函数合并了传递到 sum()的参数和传递给匿名函数的参数。...代码将输出: undefined John Doe 第一个 console.log之所以输出 undefined,是因为我们正在从 hero对象提取方法,所以调用了全局上下文中(即窗口对象)的 stoleSecretIdentity

91130

JavaScript

b,c,d) 1.11 2 1000 0.00025 console.log(typeof(a),typeof(b),typeof(c),typeof(d)) #类型 number number...null和undefined的区别 undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined。...连接数组,数个数组合并,得到一个新数组,原数组不变 .sort() 排序 .forEach() 将数组的每个元素传递给回调函数 .splice() 删除元素...a + b; })(1, 2); 匿名函数: var f = v => v; 函数全局变量和局部变量 变量生存周期       JavaScript变量的生命期从它们被声明的时间开始。       ...局部变量会在函数运行以后被删除。       全局变量会在页面关闭后被删除。 创建对象 创建对象时,命名的首字母大写,实例化的时候使用new关键字进行实例化。

1.2K10

JavaScript学习笔记+常用js用法、范例(一)

arguments.caller: 调用此函数的参数列表,没有被调用则为 undefined arguments.callee: 此函数本身的一个引用。在匿名函数里会需要用到。 ``` 6....数据类型: 基本类型: Number:数字、 String:字符串、 Boolean:布尔 特殊类型: Null:空、 Undefined未定义 组合类型: Array:数组、 Object:对象 7...函数 typeof: 查询数据当前类型(string / number / boolean / object ) ,未定义则返回“undefined” 12.运算符:(同java) 算术运算符: 加/字符连接...查看类型: undefined, null, boolean, number, string, object, function 也就是 typeof 返回的值只能是上面的其中一个(字符串类型)。...未定义的返回”undefined” number: typeof(NaN) 和 typeof(Infinity) 都返回 number; NaN参与任何数值的计算结果都是NaN,且 NaN !

2K10

1000多个项目中的十大JavaScript错误以及如何避免

有趣的是,在 JavaScript 中,null 和 undefined 是两种不同的类型,这就是为什么会出现两个不同的错误消息。未定义通常是一个尚未分配的变量,而 null 则表示该值为空。...TypeError: ‘undefined’ Is Not a Function 当调用未定义函数时,Chrome 中就会发生这样的错误。 ?...发生以上错误的原因是,当你调用 setTimeout(  )  时,实际上是在调用 window.setTimeout(  ),传递给 setTimeout(  ) 的匿名函数是在窗口对象的上下文中定义的...如果将值传递给超出范围的函数,也可能会发生这种情况。许多函数只接受特定范围内的数字输入值。...一个类似于 Typescript 这样的好的静态类型检查系统,当设置为严格的编译选项时,能够帮助开发者避免这些错误。 最后也希望通过本文,可以帮助开发者更好避免或是应对以上的10种错误。

8.2K40

10个非常基础的Javascript面试问题

因为2和“ 2”的值相等,但是它们的类型不同。 5.Null(空值)与Undefined(未定义) 通常,null表示空值和不存在的值,而undefined表示已声明但尚未定义的值。...var n; console.log(typeof(n)); // undefined var n = null; console.log(typeof(n)); // object 有趣的是JS中的对象类型为...答案复杂得多。所有声明(函数,var,let,const和class)都在JavaScript中吊起,而var声明使用undefined初始化,但是let和const声明保持未初始化。...8.全局变量与局部变量 在javascript中,范围分为两种方式。全局和局部。 在函数中声明的变量称为局部作用域。该变量不能在函数外部访问。相反,在函数外部声明的变量称为全局范围。...10.回调函数 根据MDN,回调函数一个作为参数传递给一个函数函数,然后在外部函数内部调用该回调函数以完成某种例程或操作。

64310

1000多个项目中的十大JavaScript错误以及如何避免

[image.png] 有趣的是,在 JavaScript 中,null 和 undefined 是两种不同的类型,这就是为什么会出现两个不同的错误消息。...未定义通常是一个尚未分配的变量,而 null 则表示该值为空。验证它们不相等,请使用严格的相等运算符: [image.png] 常是一个尚未分配的变量,而 null 则表示该值为空。...发生以上错误的原因是,当你调用 setTimeout( ) 时,实际上是在调用 window.setTimeout( ),传递给 setTimeout( ) 的匿名函数是在窗口对象的上下文中定义的...[image.png] 如果将值传递给超出范围的函数,也可能会发生这种情况。许多函数只接受特定范围内的数字输入值。...结论 事实证明很多这些 null 或 undefined 的错误是普遍存在的。 一个类似于 Typescript 这样的好的静态类型检查系统,当设置为严格的编译选项时,能够帮助开发者避免这些错误。

6.2K30

你根本不懂Javascript(EP1~EP3.5 基础课)

我们不会给变量声明类型, 因此将一个原本是数字的变量重新赋给字符串的值也是合法的,但是一般避免这种情况出现。...局部变量是只在一个函数中使用,防止在创建局部变量时创建全局变量(或采用已有的全局变量),就必须在函数体内部使用 var 语句。无论是全局变量还是局部变量,最好都使用 var 语句创建。...= "global"; function f() { console.log(scope); // 输出"undefined",而不是"global" //因为在这个作用域里面局部变量已经覆盖了全局变量...调用表达式 调用表达式以一个函数表达式开始,这个函数表达式指代了调用的函数。...) { // 这儿$相当于全局的 jQuery } (jQuery, YAHOO));//这两个是全局变量, 我们把它们放到这儿说明使用这两个参数调用上面那个匿名函数匿名函数域设定全局变量

97520
领券