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

【译】7个简单棘手的JavaScript面试问题

for() 在空语句上进行4次迭代(不执行任何操作),而忽略实际项目推入数组的块:{number.push(i + 1);}。...; } numbers; // => [5] for() i 变量递增到4,然后JavaScript一次进入块 {number.push(i + 1);}, 4 +1 推入数字数组。...当我第一次尝试解决,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。...log() 读取变量i的当前值3,并记录到控制台3。这就是为什么控制台输出3、3 和 3 的原因。 如果您难以理解闭包,建议阅读“ JavaScript闭包的简单说明”。...如果对你有一点点帮助,可以点喜欢点赞点收藏,还可以小额赏作者,以鼓励作者写出更多更好的文章。 关注专门同名公众号,第一间接收最新文章。

31220

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

因此,对于大多数开发人员来说,下面的代码会将true(而不是false)打印到控制台: var bar = null;console.log(typeof bar === "object"); //...9、执行下面的代码,按什么顺序数字1-4记录到控制台?...(为什么它不显示21的全局值?原因是当函数执行时,检查是否存在本地x变量尚未声明,因此它不会查找全局变量。) 30、你如何克隆一个对象?...JavaScript引擎将使阵列插槽3至9成“空插槽”。 b)在这里,a [6]输出未定义的值,隙仍空,而不是未定义的。在某些情况下,这可能是一个重要的细微差别。...console.log(typeof typeof 1); 打印结果:string typeof 1返回“number”,typeofnumber返回字符串。 37、以下代码输出什么?

2.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript面试题补充(6---10)

你会记得,闭包中的变量的值不是静态的,因此i的值不是添加处理程序时的值(对于列表来说,第一个按钮0,对于第二个按钮1,依此类推)。...在处理程序将被执行的时候,在控制台上将打印变量i的当前值,等于节点列表的长度。 问题7: 闭包(Closures) 修复上题的问题,使得点击第一个按钮输出0,点击第二个按钮输出1,依此类推。...很多JavaScript开发人员不知道typeof的一些特性。在此示例中,控制台显示以下内容: object object object undefined 最令人惊讶的输出结果可能是第三个。...这就解释了为什么“3”在“2”之前。 问题10:算法 写一个isPrime()函数,当其为质数返回true,否则返回false。 答案 我认为这是面试中最常见的问题之一。...如果面试官没有明确地告诉你,你应该询问是否需要做输入检查,还是不进行检查直接写函数。严格上说,应该对函数的输入进行检查。 第二点要记住:负数不是质数。同样的,1和0也不是,因此,首先测试这些数字。

80430

43道JavaScript面试题

虽然看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。 当我们使用==运算符只检查它是否具有相同的值。 他们都有3的值,所以返回true。...译者注:==会引发隐式类型转换,右侧的对象类型会自动拆箱Number类型。 然而,当我们使用===操作符,类型和值都需要相等,new Number()不是一个数字,是一个对象类型。...当我们错误地greeting输入greetign,JS解释器实际上在浏览器中将其视为global.greetign = {}(或window.greetign = {})。...console.log(typeof typeof 1); A: "number" B: "string" C: "object" D: "undefined" 答案: B typeof 1 返回 "number...当我们传递参数,这与变量的x不同。这个变量x是属于catch作用域的。 之后,我们这个块级作用域的变量设置1,并设置变量y的值。 现在,我们打印块级作用域的变量x,等于1

1.8K20

Javascript 中数据类型那些可能会中招的细节

是不相等的,NaN == NaN返回的是false isNaN();检测一个值不是有效数字的命题是否成立,是有效数字则返回false,不是有效数字返回的才是true isNaN() 如果检测的值不是number...类型,浏览器会默认把值转换为number类型,然后在判断是否有效数字 例如: console.log(isNaN("123")) // 打印结果是 true 步骤: 1、首先把"123...numberNumber("")结果0,false 转为数字类型,Number(false) 结果也0,所以 [] == false, 就解析成了 0与0的比较,所以相等,...张三"}; var obj2 = obj1; obj2.name = "李四"; console.log(obj1.name); 情景一印的值 12, 情景二印的值...,就是obj1指向内存空间的地址赋值给obj2,两个都指向同一个内存地址,对应的同一个值。

22920

送你43道JavaScript面试题

虽然看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。 当我们使用==运算符只检查它是否具有相同的值。他们都有3的值,所以返回true。...译者注:==会引发隐式类型转换,右侧的对象类型会自动拆箱Number类型。 然而,当我们使用===操作符,类型和值都需要相等,new Number()不是一个数字,是一个对象类型。...当我们错误地greeting输入greetign,JS解释器实际上在浏览器中将其视为global.greetign = {}(或window.greetign = {})。...console.log(typeof typeof 1); A: "number" B: "string" C: "object" D: "undefined" 答案: B typeof 1 返回 "...当我们传递参数,这与变量的x不同。这个变量x是属于catch作用域的。 之后,我们这个块级作用域的变量设置1,并设置变量y的值。现在,我们打印块级作用域的变量x,等于1

1.4K10

送你43道JavaScript面试题

虽然看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。 当我们使用==运算符只检查它是否具有相同的值。 他们都有3的值,所以返回true。...译者注:==会引发隐式类型转换,右侧的对象类型会自动拆箱Number类型。 然而,当我们使用===操作符,类型和值都需要相等,new Number()不是一个数字,是一个对象类型。...当我们错误地greeting输入greetign,JS解释器实际上在浏览器中将其视为global.greetign = {}(或window.greetign = {})。...console.log(typeof typeof 1); A: "number" B: "string" C: "object" D: "undefined" 答案: B typeof 1 返回 "...当我们传递参数,这与变量的x不同。这个变量x是属于catch作用域的。 之后,我们这个块级作用域的变量设置1,并设置变量y的值。 现在,我们打印块级作用域的变量x,等于1

1.5K20

送你43道JavaScript面试题

虽然看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。 当我们使用==运算符只检查它是否具有相同的值。 他们都有3的值,所以返回true。...译者注:==会引发隐式类型转换,右侧的对象类型会自动拆箱Number类型。 然而,当我们使用===操作符,类型和值都需要相等,new Number()不是一个数字,是一个对象类型。...当我们错误地greeting输入greetign,JS解释器实际上在浏览器中将其视为global.greetign = {}(或window.greetign = {})。...console.log(typeof typeof 1); A: "number" B: "string" C: "object" D: "undefined" 答案: B typeof 1 返回 "number...当我们传递参数,这与变量的x不同。这个变量x是属于catch作用域的。 之后,我们这个块级作用域的变量设置1,并设置变量y的值。 现在,我们打印块级作用域的变量x,等于1

1.6K30

50道JavaScript详解面试题,你需要了解一下

4、Line1和Line2的控制台输出是什么? 在Line1中,我们有两个相互比较的对象,并且它们都是唯一的,因此它将在控制台上记录False。...答案是C,当我们需要等待执行直到所有的都被解决,Promise.all()会非常有用。 13、控制台输出是什么,为什么? 在这种情况下,我们有&运算符,它与&&运算符完全不同。...&是按位运算符,当我们比较11和3,它将与1011和0011的二进制相同。结果,只有都为1的位保持1,返回的输出0011,它是3的二进制表示形式, 因此3记录在控制台上。 14、Object。...23、控制台输出是什么,为什么控制台输出将为Map {'a'=> 2,'b'=> 2,'c'=> 1},这意味着第二个映射中的所有相同键覆盖第一个映射中的键。...28、JavaScript是否支持重载? 不,JavaScript本身不支持重载,TypeScript可以。

3.5K40

Java程序员,这7个简单棘手的JavaScript面试问题。你会吗?

for() 在空语句上进行4次迭代(不执行任何操作),而忽略实际项目推入数组的块:{number.push(i + 1);}。...; } numbers; // => [5] for() i 变量递增到4,然后JavaScript一次进入块 {number.push(i + 1);}, 4 +1 推入数字数组。...因此 arrayFromValue(10) 的值 undefined。 5.经典问题:棘手的闭包 Question 以下代码输出什么到控制台?...当我第一次尝试解决,这也是我的答案! 执行此代码段有两个阶段。 Phase 1 for() 重复3次,在每次迭代过程中,都会创建一个新的函数 log() 来捕获变量 i。...log() 读取变量i的当前值3,并记录到控制台3。这就是为什么控制台输出3、3 和 3 的原因。 如果您难以理解闭包,建议阅读“ JavaScript闭包的简单说明”。

87720

【JS进阶】你真的掌握变量和类型了吗

因此,我们改变其中任何一个变量的值,另一个变量都会受到影响,这就是为什么会有深拷贝和浅拷贝的原因。 2.4 比较 当我们在对两个变量进行比较,不同类型的变量的表现是不同的: ?...4.1 Symbol的特性 1.独一无二 直接使用Symbol()创建新的symbol变量,可选用一个字符串用于描述。当参数对象调用对象的toString()方法。...0 false 7.3 各种运数学算符 我们在对各种非Number类型运用数学运算符(- * /),会先将非Number类型转换为Number类型; 1 - true // 0 1 - null /...2.当一侧Number类型,另一侧原始类型,则将原始类型转换为Number类型。 3.当一侧Number类型,另一侧引用类型,引用类型和Number类型转换成字符串后拼接。...(); }, } 八、判断JavaScript数据类型的方式 8.1 typeof 适用场景 typeof操作符可以准确判断一个变量是否下面几个原始类型: typeof 'ConardLi' //

3.2K30

javascript 中的 delete

,我们深入研究当声明变量,functions,指定属性和删除它们 在幕后究竟发生了什么; 我们列举浏览器的承诺和一些最臭名昭著的bug;我们也会讨论第五版 ECMAScript的严格模式,以及如何改变...这就是为什么不能被删除的原因. */ var foo = 1; delete foo; // false typeof foo; // "number" /* `bar...赋值并不会发生 */ function bar(){} bar = 1; delete bar; // false typeof bar; // "number...,我们深入研究当声明变量,functions,指定属性和删除它们 在幕后究竟发生了什么; 我们列举浏览器的承诺和一些最臭名昭著的bug;我们也会讨论第五版 ECMAScript的严格模式,以及如何改变...这就是为什么不能被删除的原因. */ var foo = 1;   delete foo; // false typeof foo; // "number" /*  `bar` 是 Global

3K80

炫技!JavaScript 的花式玩法

说明: 这条语句做几次分割,我们来分析一下结果: (![]+[]) // -> 'false' ![] // -> false 我们尝试[]置false。...undefined是一个分配给形式参数的值,没有实际的参数,因此您可能希望Number(无参数)不定义其参数的值。...如果argumentfalse,则返回+0。 这就是为什么我们可以与布尔值相加,视为常规数字并获得正确的结果。...以下是Number的属性列表: 20.1 Number Objects 三个数字比较 1 true 3 > 2 > 1 // -> false ?说明: 为什么这样呢?...说明: 为什么是3?当我们使用扩展运算符,@@ iterator方法被调用,返回迭代器用于获取要迭代的值。字符串默认是按字母迭代。解构后,我们这些字符打包成一个数组。

1.4K50

检查 JavaScript 变量是否数字的几种方式

但是如果没有文档和保持一致性,在使用代码,我们很有可能并不知道变量究竟是哪种类型。 当我们打算对数字进行操作,如果对字符串或数组进行操作会带来奇怪的结果。...在本文中,我们研究可以帮我们确定所用的变量是否数字的各种函数。...() 函数 Number.isFinite() 用来函数检查变量是否数字,但也用来检查其是否某些特殊值。...(对象的一种特殊类型) 为了验证变量是否数字,我们只需要检查 typeof() 返回的值是否 "number"。...总结 本文研究了如何检查 JavaScript 中的变量是否数字。 只有在我们知道自己的变量是一个数字,并且需要验证它是否 NaN Number.isNaN() 函数才适用。

2.7K41

【javascript】详解变量,值,类型和宿主对象

', typeof 1); // 检测number number console.log('检测boolean',typeof true); // 检测boolean boolean console.log...我们知道,强大的JSON.stringify可以许多值转化为字符串, 仅限于JSON安全的值(JSON-safe) 如: JSON.stringify( 42 ); // "42" JSON.stringify...javascript标准里的其他对象那样服从“控制” 它有以下一些特点: • 无法写覆盖; • 包含一些预定义的只读属性; • 包含无法 this 重载其他对象的方法 基本类型大杂谈——聊聊那些坑点...首先我要告诉你上面1,2两条已经足以表征undefined和 undeclared的不同了,很多时候我们仍会搞混,为什么呢? 因为javascript会 故!意!搞!事!(此处有褒有贬) 1....NaN属于number类型,只不过是一种非常特殊的number的值, NaN NaN属于第2种而不是第1种!!

1.7K60
领券