gpt4 book ai didi

javascript - 为什么 "3 [1, 2];"在 JavaScript 中返回 undefined?

转载 作者:可可西里 更新时间:2023-11-01 01:32:17 25 4
gpt4 key购买 nike

我查看了 GMail 执行的一些 AJAX 调用,我注意到有时调用的返回值以数字开头。示例:(注意第一行后没有分号)

3 
[1, 2];

如果我将其输入 JavaScript 控制台,我会返回 undefined。但是,如果第二个参数是数字或字符串,我会返回第二个参数。示例:

3
4

返回 4.

我的猜测是他们这样做是为了阻止 jsonp 类型的攻击,但是,有谁知道正在进行的基础评估是什么?在第二种情况下,我相信在第一行之后“插入”了一个分号,这将使返回 4 有意义。但是,我想不出第一个表达式返回未定义的原因。

最佳答案

这是因为 ASI(自动分号插入)的工作原理。第一条语句解释为

3[1,2];

所以它是未定义。第二个被 ASI 解释为 3;4;4

ASI 规则在某些情况下是违反直觉的,例如您可能想知道为什么数字和括号之间没有分号?好吧,这是有原因的。阅读这些资源以获取更多详细信息:

What are the rules for JavaScript's automatic semicolon insertion (ASI)?

http://bclary.com/2004/11/07/#a-7.9.1

Google 可能会为您提供更多结果。 :) 这就是为什么我们没有结束 无分号 JavaScript 的 war 。

关于javascript - 为什么 "3 [1, 2];"在 JavaScript 中返回 undefined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631105/

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