返回顶部
首页 > 资讯 > 前端开发 > 其他 >晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
  • 797
分享到

晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么

前端面试题 2023-05-14 22:05:29 797人浏览 薄情痞子
摘要

本篇文章给大家带来了关于前端的相关知识,其中主要跟大家分享一道有关console.log的面试题,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。前言面试题console.log(([][[]] + [])[+!![]]+([]+{})[

本篇文章给大家带来了关于前端的相关知识,其中主要跟大家分享一道有关console.log的面试题,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

前言

面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么?面试遇到了这一个面试题,该面试题考察了类型转换,隐式类型转换,操作符等,我没答出来,不是我不会,是我光看题就很晕了。然而它确实是面试题,那就试着解决看看咯。

5f4abdec908895a6ec7b7c15ff07394.png

解决这个题目需要的知识

  • “+”:一元+会执行与使用Number()一样的转换
  • 如果+号是两个数相加,任一操作数是对象、数值或者布尔,则调用它们的toString方法转为字符串
  • “!”:非操作符,这个操作始终返回布尔值
  • “!!”:强制转为布尔值

解决这个题目([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]

首先我们要先理清它的执行顺序

首先执行([][[]] + []),先执行里面的[][[]],在计算 [][[]]时,其实就是执行[]空数组里面key为[]的值

  1. 首先,javascript 引擎解析空数组 []。空数组没有任何元素。
  2. 接下来,引擎尝试使用 [] 作为属性名来访问空数组的属性。在这种情况下,由于 [] 本身是一个数组,JavaScript 引擎会尝试将其转换为字符串。由于 [] 为空数组,转换成字符串后结果为一个空字符串 ""
  3. 最后,引擎会尝试访问空数组中名为 "" 的属性。由于这个属性并不存在于空数组中,所以结果为 undefined

所以,执行 [][[]] 的结果是 undefined

那么([][[]] + [])接下去执行就是(undefined + []) 将会执行隐式类型转换,将undefined转换为字符串"undefined",将[]转为“”,然后将两个字符串拼接在一起。因此,结果是"undefined"

其次执行[+!![]],!![]空数组转布尔值为true,一元操作服+会转为数值,+true就是将true转换为数字1。得到的结果就是[1]。于是我们就可以得到([][[]] + [])[+!![]]undefined[1]这个的结果就是字符串'n'

接下来就是执行([]+{})[+!![]+ + !![]] 这一部分,再将这部分的结果和上面的结果相加

  1. 先执行([]+{}), 计算[]+{}。这将触发隐式类型转换,将空对象转换为字符串"[object Object]",然后将两个字符串拼接在一起。因此,结果是'[object Object]'

  2. 再执行[+!![]+ + !![]], +!![]前面有解析过得到的是1,所以这一部分执行过后得到的是数值1相加1+1,得到的结果是[2]

  3. 那么这两部分合起来就是'[object Object]'[2],就是字符串的第三个值b

最后将前面部分得到的结果 'n' 和后面部分得到的结果 'b' 相加,得到最后的结果'nb'

总结:这个题目一时解决不了的话,可能有以下几个原因,第一个就是不太清楚执行顺序,其次就是不太理解[][[]]这个,实际上就是获取空数组key为[]的值,又因为数组的key为字符串,所以会将[]转为''是找不到的所以返回undefined。现在你会这道面试题了吗?

以上就是晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么

本文链接: https://lsjlt.com/news/207461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 晕!面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
    本篇文章给大家带来了关于前端的相关知识,其中主要跟大家分享一道有关console.log的面试题,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。前言面试题console.log(([][[]] + [])[+!![]]+([]+{})[...
    99+
    2023-05-14
    前端面试题
  • PHP面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么
    这篇“PHP面试题console.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]])输出什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值...
    99+
    2023-07-06
  • vue怎么去掉所有的console.log输出
    这篇文章主要介绍“vue怎么去掉所有的console.log输出”,在日常操作中,相信很多人在vue怎么去掉所有的console.log输出问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么去掉所有的c...
    99+
    2023-06-29
  • console.log怎么在console窗口输出信息
    这篇文章主要介绍“console.log怎么在console窗口输出信息”,在日常操作中,相信很多人在console.log怎么在console窗口输出信息问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”con...
    99+
    2023-06-26
  • Java多线程面试题之交替输出问题的实现
    目录交替输出问题最简单的解法面试官想听到的解法更灵活,更精细的解法交替输出问题 一定要保证交替输出,这就涉及到两个线程的同步问题。 有人可能会想到,用睡眠时间差来实现,但是只要是多...
    99+
    2024-04-02
  • Python有什么面试题
    本篇内容介绍了“Python有什么面试题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Python编程是什么?他会鼓励你与其它语言做对比...
    99+
    2023-06-17
  • java内存溢出面试题
    引起内存溢出的原因有很多种,常见的有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动...
    99+
    2021-12-21
    java面试题 java
  • 3个CCIE出的面试题
    3个CCIE出的面试题 1. 现在的6509及7609,SUP720交换带宽去到720G,是不是可以说7609/6509可以取代一部分GSR的地位?  2. isis level1 的路由表包括哪此路由?有多个level-1-2出口时,其它...
    99+
    2023-01-31
    面试题 CCIE
  • JS面试题解['1', '7', '11'].map(parseInt) 输出
    目录输出结果map函数有问题?会不会是传入的 parseInt 出现问题 ?输出结果 ['1', '7', '11'].map(parseInt) // 结果输出 -> [...
    99+
    2024-04-02
  • ASP 面试:如何准备?面试官会问什么问题?
    ASP 面试:如何准备?面试官会问什么问题? ASP(Active Server Pages)是一种基于服务器端的动态网页技术,它使用一系列的脚本语言和组件来生成动态的网页。在ASP的职业领域,每年都有大量的工作机会。如果你是一名ASP开发...
    99+
    2023-10-27
    重定向 打包 面试
  • java数组中有什么面试题
    这篇文章给大家分享的是有关java数组中有什么面试题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序...
    99+
    2023-06-14
  • python面试题之什么是lambda函
    lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。 lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。   ...
    99+
    2023-01-31
    面试题 python lambda
  • python面试题之Python支持什么
    所属网站分类: 面试经典 > python 作者:外星人入侵 链接:http://www.pythonheidong.com/blog/article/67/ 来源:python黑洞网,专注python资源,python教程...
    99+
    2023-01-31
    面试题 python Python
  • Java的5道面试题是什么
    本篇内容主要讲解“Java的5道面试题是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的5道面试题是什么”吧!XML技术的作用?XML技术用于数据存储、信息配置、数据交换三方面。可以...
    99+
    2023-06-02
  • php页面输出值乱码问题怎么解决
    在开发PHP应用程序时,经常会遇到输出到页面的值出现乱码的问题。这是因为PHP输出到页面的值是通过编码的方式传输的,而常见的字符编码包括UTF-8、GBK、GB2312等,如果输出的编码格式不正确,就会出现乱码问题。在PHP中,可以通过以下...
    99+
    2023-05-14
    php 乱码
  • Go/Gin 调试输出的含义是什么 - (x handlers)
    php小编柚子为您解答Go/Gin调试输出中的"(x handlers)"的含义。在Go语言的Gin框架中,"(x handlers)"代表请求经过的中间件数量。中间件是Gin框架中用...
    99+
    2024-02-09
    go语言
  • JAVA十大面试问答题是什么
    本篇内容介绍了“JAVA十大面试问答题是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1、String是最基本的数据类型吗?  答:...
    99+
    2023-06-27
  • python面试题之什么是PEP8规范
    1 缩进。4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格。 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车。 3 类和top-level函数定义之间空两行;类...
    99+
    2023-01-31
    面试题 python
  • 面试前必须要知道的21道Redis面试题是什么
    本篇内容介绍了“面试前必须要知道的21道Redis面试题是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用redis有哪些好处?速度快...
    99+
    2023-06-04
  • 【PHP面试题06】Trait是什么,有什么作用
    文章目录 背景一、关于继承和接口1.1 继承1.2 接口 二、Trait2.1 Trait 是什么2.2 Trait的作用 总结 背景 本文已收录于PHP全栈系列专栏:PHP...
    99+
    2023-10-23
    Trait PHP面试 继承 接口
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作