gpt4 book ai didi

javascript - 揭秘 JavaScript 中的强制转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:47:17 28 4
gpt4 key购买 nike

谁能帮我揭开以下表达式的神秘面纱:

++[[]][+[]]+[+[]]

我的理解从左到右:

  • ++[[]]:不确定这将评估什么以及如何评估。
  • [+[]]:+[] 将首先执行,一元运算符将尝试将 [] 转换为数字。因此为 0。因此 [+[]] 的输出将为 [0]。
  • [+[]]+[+[]]:等于 [0] + [0]。这里将调用数组的 toString() 方法,输出将为“00”。

基本上我无法理解最左边的表达式,即 ++[[]]

最佳答案

++[[]][+[]]+[+[]]

表达式将被分成两部分,如下所示

  • ++[[]][+[]][+[]]

现在[+[]]评估为 [0] (正如您已经了解的那样。)

接下来考虑++[[]][+[]]相当于++([[]][+[]]) :

步骤(过程)

  • ++[[]][0]

现在[[]]是一个包含单个数组作为其元素的数组。所以[[]][0]评估为 []已经在内存中分配。

现在,由于 0 元素数组已经分配到内存中,因此在进行数学运算时,它被转换为 0因此,当使用 ++ 递增时,内存位置具有 0 元素数组运算符内存位置获得新值 1。

所以 ++[[]][+[]]最终评估为 1 .

现在是 1+[0]1+[0].toString()1.toString()+"0""1" + "0" 10 .

关于javascript - 揭秘 JavaScript 中的强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846149/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com