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

面试官:为什么“false == ”都返回true?

可能还不够了解!有时真的想不通它是如何工作,看完这5个奇怪问题,你就知道为啥这么说了,你知道这些古怪问题正确答案吗? 我们现在开始吧。...1、为什么“false == []”和“false == ![]”都返回true? 朋友们,请不要惊讶这确实是正确答案。 只要我们有了相等比较和相同知识,我们就能完全理解它是怎么一回事了。...[]) // true 让简要解释一下它是如何工作当我们遇到一个布尔值和一个对象进行比较,会将这两个值转换为数字进行最后比较。 所以它会经历这些步骤。 // 1....想你猜对了,答案是“fatfish”。不,不是!答案是“medium”。 这是因为在“try….catch….finally”语句中,finally子句无论是否抛出异常都会被执行。...另外,如果抛出异常,即使没有catch子句处理异常,finally子句中语句也会被执行。 4.关于箭头功能? 是的,问题很简单,你会看到fatfish被打印出来了。

93310

送你43道JavaScript面试题

我们实际上要问是“这个真值是假吗?”。 这会返回false。 ---- 5. 哪个选项是不正确?...JavaScript解释语句当我们使用方括号表示法,它会看到第一个左括号[,然后继续,直到找到右括号]。只有在那个时候,它才会对这个语句求值。...这就是为什么obj.hasOwnProperty('1')也返回true。 上面的说法不适用于Set。 在我们Set中没有“1”:set.has('1')返回false。...当我们传递参数,这与变量x不同。这个变量x是属于catch作用域。 之后,我们将这个块级作用域变量设置为1,并设置变量y值。 现在,我们打印块级作用域变量x,它等于1。...当我们想在catch块之外console.log(x),它返回undefined,而y返回2。 ---- 39.

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

送你43道JavaScript面试题

我们实际上要问是“这个真值是假吗?”。 这会返回false。 ---- 5. 哪个选项是不正确?...JavaScript解释语句当我们使用方括号表示法,它会看到第一个左括号[,然后继续,直到找到右括号]。只有在那个时候,它才会对这个语句求值。...这就是为什么obj.hasOwnProperty('1')也返回true。 上面的说法不适用于Set。 在我们Set中没有“1”:set.has('1')返回false。...当我们传递参数,这与变量x不同。这个变量x是属于catch作用域。 之后,我们将这个块级作用域变量设置为1,并设置变量y值。 现在,我们打印块级作用域变量x,它等于1。...当我们想在catch块之外console.log(x),它返回undefined,而y返回2。 ---- 39.

1.6K30

送你43道JavaScript面试题

我们实际上要问是“这个真值是假吗?”。这会返回false。 ---- 5. 哪个选项是不正确?...JavaScript解释语句当我们使用方括号表示法,它会看到第一个左括号[,然后继续,直到找到右括号]。只有在那个时候,它才会对这个语句求值。...这就是为什么obj.hasOwnProperty('1')也返回true。 上面的说法不适用于Set。在我们Set中没有“1”:set.has('1')返回false。...当我们传递参数,这与变量x不同。这个变量x是属于catch作用域。 之后,我们将这个块级作用域变量设置为1,并设置变量y值。现在,我们打印块级作用域变量x,它等于1。...当我们想在catch块之外console.log(x),它返回undefined,而y返回2。 ---- 39.

1.4K10

43道JavaScript面试题

我们实际上要问是“这个真值是假吗?”。 这会返回false。 ---- 5. 哪个选项是不正确?...JavaScript解释语句当我们使用方括号表示法,它会看到第一个左括号[,然后继续,直到找到右括号]。只有在那个时候,它才会对这个语句求值。...这就是为什么obj.hasOwnProperty('1')也返回true。 上面的说法不适用于Set。 在我们Set中没有“1”:set.has('1')返回false。...当我们传递参数,这与变量x不同。这个变量x是属于catch作用域。 之后,我们将这个块级作用域变量设置为1,并设置变量y值。 现在,我们打印块级作用域变量x,它等于1。...当我们想在catch块之外console.log(x),它返回undefined,而y返回2。 ---- 39.

1.8K20

送你58道JavaScript面试题(上)

当我们输出 members数组第一个元素会将引用对象打印出来。 ---- 47. 下面代码输出是什么?...当函数没有返回任何值,即默认返回 undefined.对数组中每一个元素来说,函数块都得到了这个返回值,所以结果中每一个元素都是 undefined. ---- 51. 下面代码输出是什么?...答案: D 通过 throw语句么可以创建自定义错误。而通过它,我们可以抛出异常。异常可以是一个字符串, 一个 数字, 一个 布尔类型 或者是一个 对象。...reducer 函数还有一个可选参数 initialValue, 该参数将作为第一次调用回调函数第一个参数值。如果没有提供 initialValue,则将使用数组中第一个元素。...当我们测试相等,我们创建了两个全新符号:第一个 Symbol('foo'),第二个 Symbol('foo'), 这两个值是唯一,彼此不相等,因此返回 false。 ---- 69.

76020

年后面试必备:95%错误率9道面试题!

然而,这不是程序打印,这就是为什么这个问题很棘手。事实上,程序输出是依赖于操作系统和语言环境。...因此,如果在编码和解码期间不使用相同字符编码,则检索到值可能不正确当我们调用 str.getBytes() 而不指定字符编码方案,JVM使用平台默认字符编码来完成工作。...好吧,在你保证id总是正面之前,这个Java问题中三个没有错。当你无法保证id为正或负,这个Java问题变得棘手。棘手部分是,如果id变为负数,则减法可能会溢出并产生不正确结果。...第8道 你如何确保N线程可以在没有死锁情况下访问N个资源? 如果您不熟悉编写多线程代码,那么这对您来说是一个非常棘手问题。...为什么?因为没有对编译器任何指令,例如synchronized或volatile, bExit = true 可能在编译器重新排序中在x = 1之前出现。

94120

JavaScript 进阶问题列表

因为当我打印 name 变量没有执行到定义变量位置,因此变量值保持为 undefined。 通过 let 和 const 关键字声明变量也会提升,但是和 var 不同,它们不会被初始化。...当我们使用括号语法([]),JavaScript 会解释(或者 unboxes)语句。它首先看到第一个开始括号 [ 并继续前进直到找到结束括号 ]。只有这样,它才会计算语句值。...这就是为什么 obj.hasOwnProperty('1') 也返回 true。 对于集合,它不是这样工作。在我们集合中没有 '1':set.has('1') 返回 false。...当我们输出members数组第一个元素会将引用对象打印出来。 ---- 47. 输出是什么?...---- 答案: D 通过throw语句么可以创建自定义错误。而通过它,我们可以抛出异常。异常可以是一个字符串, 一个 数字, 一个 布尔类型 或者是一个 对象。

1.3K10

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

答案是输出为10,因为将对象传递给函数对象相似,仅传递其值,而不传递对内存位置实际引用。这就是为什么更改仅影响函数范围内参数原因。 3、控制台输出是什么?...8、等待关键字会阻止应用程序中所有JavaScript代码执行,直到返回等待Promises? 答案是False,await关键字仅阻止执行包含await关键字特定函数内代码。...答案是C,当我们需要等待执行直到所有的都被解决,Promise.all()会非常有用。 13、控制台输出是什么,为什么? 在这种情况下,我们有&运算符,它与&&运算符完全不同。...23、控制台输出是什么,为什么? 控制台输出将为Map {'a'=> 2,'b'=> 2,'c'=> 1},这意味着第二个映射中所有相同键将覆盖第一个映射中键。...但是,可以在JavaScript中通过在未将所有可能参数都传递给函数返回不同输出来执行重载。 29、return语句在数组forEach循环中做什么?

3.5K40

【JS】411- JS 进阶系列问题(47问)

因为当我打印 name 变量没有执行到定义变量位置,因此变量值保持为 undefined。 通过 let 和 const 关键字声明变量也会提升,但是和 var 不同,它们不会被初始化。...当我们测试相等,我们创建了两个全新符号:第一个Symbol('foo'),第二个Symbol('foo'), 这两个值是唯一,彼此不相等,因此返回false。 ---- 15. 输出什么?...我们用相同值三次调用了addFunction函数: 在第一次调用,num等于10函数值尚未缓存,if语句num in cache返回false,else块代码被执行:Calculated!...当我打印this.status,data对象status属性被打印,即"?"。 使用call方法,可以更改this指向对象。...这不会更改person对象:没有对该对象引用。 因此打印person对象,会返回未修改对象。 ---- 30. 输出什么?

2.3K50

不是吹,你可能连defer都不清楚

在golang中,对于defer,之前理解就是和java中finally代码块一样,没什么难度,但是吧,当我最近看一些神奇问题,就发现原来并非想那么简单。...下面会一步步介绍,到底为什么结果会是这样 基础知识 函数返回值初始化 如 : func DeferFunc1(i int) (t int) { 其中返回值t int,这个t会在函数起始处被初始化为对应类型零值并且作用域为整个函数...函数返回与return 在没有defer情况下,其实函数返回就是与return一致,但是有了defer就不一样了。...函数返回其实是有两个步骤第一个当执行到return语句时候 func DeferFunc3(i int) (t int) { defer func() { t += i...赋值defer中func入参t为0 执行defer第二步,将defer压栈 将t赋值为1 执行return语句,将返回值t赋值为2 执行defer第三步,出栈并执行 因为在入栈defer执行func

22520

面试官:如何停止 JavaScript 中 forEach 循环?

在回答这个问题回答导致面试官突然结束了面试。 对结果感到沮丧,问面试官:“为什么?实际上可以停止 JavaScript 中 forEach 循环吗?”...在面试官回答之前,花了一些时间解释为什么我们不能直接停止 JavaScript 中 forEach 循环理解。 答案正确吗? 小伙伴们,下面的代码会输出什么数字呢?...向面试官展示了这段代码,但他仍然相信我们可以停止 JavaScript 中 forEach 循环。 天哪,你一定是在开玩笑。 为什么? 为了说服他,不得不再次实现forEach模拟。...例如,在下面的代码中,即使“func1”遇到break语句,“2”仍然会输出到控制台。...1.抛出错误 当我们找到第一个大于或等于0数字后,这段代码将无法继续。所以控制台只会打印出0。

17730

Python 面试中必考问题

因此,每次返回函数乘以传递过来值 3,因为上段代码传过来值是 2,它们最终返回都是 6。...这就是为什么第一个打印语句输出结果是 1 1 1。 因此,如果它任何一个子类被覆写了值(例如说,当我们执行语句 Child.x = 2),这个值只在子类中进行了修改。...这就是为什么第二个打印语句输出结果是 1 2 1。...最终,如果这个值在父类中进行了修改,(例如说,当我们执行语句 Parent.x = 3),这个改变将会影响那些还没有覆写子类值(在这个例子中就是 Child2)这就是为什么第三打印语句输出结果是 3...(当然,假设上述打印语句被转换成 Python3 语法) 答案: 在 Python2 中,上述代码输出将是 5/2 = 2 5.0/2 = 2.5 5//2 = 2 5.0//2.0 = 2.0

56830

Python 面试中8个必考问题

因此,每次返回函数乘以传递过来值3,因为上段代码传过来值是2,它们最终返回都是6。...这就是为什么第一个打印语句输出结果是1 1 1。 因此,如果它任何一个子类被覆写了值(例如说,当我们执行语句 Child.x = 2),这个值只在子类中进行了修改。...这就是为什么第二个打印语句输出结果是1 2 1。...最终,如果这个值在父类中进行了修改,(例如说,当我们执行语句 Parent.x = 3),这个改变将会影响那些还没有覆写子类值(在这个例子中就是 Child2)这就是为什么第三打印语句输出结果是3 2...(当然,假设上述打印语句被转换成Python3语法) 答案: 在Python2中,上述代码输出将是 5/2 = 2 5.0/2 = 2.5 5//2 = 2 5.0//2.0 = 2.0 默认情况下,

86790

T-SQL进阶:超越基础 Level 9:动态T-SQL代码

编写动态TSQL,您需要了解动态代码如何打开SQL注入攻击可能性。 在本文中,解释了为什么你可能想要使用动态TSQL以及如何生成动态TSQL。...还将探索SQL注入,并讨论如何避免SQL注入攻击您动态TSQL代码。 什么是动态TSQL以及为什么你想要使用它? 什么是动态TSQL?动态TSQL是每次运行它潜在代码。...最后一部分代码通过删除创建测试数据库进行清理。 如果您查看第2节中代码,您将发现动态TSQL代码首先打印出运行delete语句,然后删除在第1节中创建测试表。...EXEC sp_executesql 答案: 问题1: 正确答案是a。避免SQL注入式攻击最佳方法是不允许您应用程序中动态TSQL代码。 问题2: 正确答案是e,以上所有。...如果应用程序帐户具有sysadmin权限,则SQL注入式攻击可以执行用户想要任何操作。 问题3: 正确答案是b。

1.9K20

猿进化系列3——看完这个,你就有好几根猴毛了!

如果...写了打印是第2行”,但是又不想让它执行,你有没什么办法哇? 看我,小case: ? 等等,那个红框里是个什么鬼?居然让辛辛苦苦写代码不行执行?...敲完代码不许点执行,自己先写出答案,答错自己回去看三遍猿人进化系列2!!!...a:a+b;(先动手,以后给出答案) 注意:三元语句绝大多数情况下都是可以用if else语句改写,编写代码推荐if else 讲三元是为了大家理解语法。...再来考考你,在程序中有一个变量a,当a值为1输出“是第1行”,当a值为2输出“是第2行”,当a值为3输出“是第3行”,已此类推,一直到第5行! 不要低估了智商!看我! ?...如果没有返回值那么方法类型是void,方法大括号内return可以不写。 修饰符: 目前固定写法 public static 。

55820

c语言每日一练(4)

代码主要部分是一个循环,最终目标是打印出a大小。...可以看出,当b=3*7+1时候会跳出循环,这时b已经加过7次3了,7+1就是8,所以最后会打印出8,所以答案选C 2、下面代码结果使() #include int main...4个整型元素所占字节数为4*4=16,因此答案为B 3、以下叙述中正确是( ) A. 只能在循环体内和switch语句体内使用break语句 B....先看函数,函数返回类型是void型,参数一个为char(字符)型,一个为float[ ](浮点型数组) ,因此,第一个变量传字符型变量,第二个变量传一个浮点型数组或者传一个float*指针。...先观察第一个变量,A传了一个字符串显然错误,A排除。BC均传了一个字符,正确。 而D传了一个数字,好像错了,但它是对为什么

10310

IO多路复用和多线程会影响Redis分布式锁吗?

我们知道当我们使用 redis 作为分布式锁时候,通常会使用 SET key value EX 10 NX 命令来加锁,获得锁客户端才能成功 SET 这个 key,那么问题来了,这条命令在多线程情况下是一个原子操作吗...其实答案是显而易见,因为 redis 设计者肯定考虑到了向前兼容问题,并且也不会让这样特性消失,所以在问这个问题以前,虽然不能肯定,但是还是能自信回答,但没有足够底气。...,那么可以使用 lua 脚本,先通过 get 确定对应 key 值是否正确,如果正确再 del,整个 lua 脚本通过 EVAL 执行 只要上锁和解锁操作都能保证,就能解决问题。...大致可分为: 读取 解析 执行 返回 其中,命令读取和解析显然是不会影响数据,所以当然多线程执行也没有问题。最关键步骤也就是执行了。 IO 多路复用 先来看看 IO 多路复用会有影响吗?...在这个状态下,客户端不能发送其他命令,直到当前命令执行结果返回

45530

(附答案

这篇来看看关于 Java String类 5 道面试题,这五道题,自己在面试过程中亲身经历过几道题目,本篇就带你了解这些题答案为什么是这样。 st1和st2是否相等?...System.out.println(st1 == st2); System.out.println(st1.equals(st2)); } } 输出结果: 第一行:true 第二行:true 分析 先看第一个打印语句...字符串不属于8中基本数据类型,字符串对象属于引用数据类型,在上面把“abc”同时赋值给了st1和st2两个字符串对象,指向都是同一个地址,所以第一个打印语句==比较输出结果是 true 然后我们看第二个打印语句...当我们看到了new这个关键字,就要想到,new出来对象都是存储在堆内存。然后我们来解释堆中对象为什么是常量池对象拷贝副本。...总结 这篇面试题,完全就是要求掌握JDK API中一些注解和原理,以及内存图分析,才能得到正确结果,承认是画内存图让理解了答案为什么是这样。

34020
领券