Javascript 中的 + [] [重复]

     2023-05-07     128

关键词:

【中文标题】Javascript 中的 + [] [重复]【英文标题】: + [] in Javascript [duplicate]Javascript 中的 + [] [重复] 【发布时间】:2012-08-10 04:02:42 【问题描述】:

可能重复:What is the explanation for these bizarre JavaScript behaviours mentioned in the 'Wat' talk for CodeMash 2012?

当我输入时

 + []

在 Google Chrome JavaScript 控制台中,我得到了

0

结果。但是,当我输入时

Function("return  + []")()

我明白了

"[object Object]"

结果。我认为这两个操作都应该返回相同的结果,因为一个只是另一个的包装器。为什么它们返回不同的结果?

【问题讨论】:

你的函数里面的语句和第一个语句不同。 [object Object] 只是使用().toString() 的效果 - 你是alert 你的函数结果还是console.log (+[]) 返回“[object Object]”。正如 Mike 在下面解释的,这是语句和表达式之间的区别。 ***.com/questions/11939044/… 【参考方案1】:

核心原因是 在语句上下文 statement0; statement1 中与在表达式上下文( "property": value, ... ) 中的含义不同。

  + []

是一个块和一元比较运算符,因此与

相同
  // An empty block of statements.
(+ [])  // Use of prefix operator +.

另一个是加号运算符的使用,当与两个对象一起使用时,将它们连接起来

return String() + String([])

由于Array.prototype.toString以逗号加入数组,所以类似于

return String() + [].join(",")

减少到

return "[Object object]" + "";

终于到了

return "[Object object]"

【讨论】:

为什么在上述两种情况下 的解析方式不同? @MarkusRoth 这是因为函数返回被评估为表达式;在这种情况下,一个空的 被评估为一个对象。另一种情况 被视为空代码块。

javascript中的静态自我成员[重复]

】javascript中的静态自我成员[重复]【英文标题】:Staticselfmemberinjavascript[duplicate]【发布时间】:2012-06-0908:57:39【问题描述】:可能重复:StaticvariablesinJavaScript如何在javascript中对self成员进行静态封装?比如在php中:classbarstaticpubli... 查看详情

JavaScript中的货币格式[重复]

】JavaScript中的货币格式[重复]【英文标题】:CurrencyFormattinginJavaScript[duplicate]【发布时间】:2013-01-0604:58:36【问题描述】:可能重复:HowcanIformatnumbersasmoneyinJavaScript?我有一个带有一些简单JavaScript的表单来执行即时计算。我的问... 查看详情

Javascript中的parseInt行为[重复]

】Javascript中的parseInt行为[重复]【英文标题】:parseIntbehaviourinJavascript[duplicate]【发布时间】:2015-11-2507:43:41【问题描述】:我打开终端浏览器(例如Chrome)。我写这个:vary="11000011010101011";“11000011010101011”parseInt(y)11000011010101012... 查看详情

做啥 ?和:在javascript中的意思[重复]

】做啥?和:在javascript中的意思[重复]【英文标题】:Whatdo?and:meaninjavascript[duplicate]做什么?和:在javascript中的意思[重复]【发布时间】:2013-01-2512:26:47【问题描述】:我正在尝试理解这个http://www.queness.com/post/12078/create-jquery-pint... 查看详情

对象中的JavaScript位置属性访问[重复]

】对象中的JavaScript位置属性访问[重复]【英文标题】:JavaScriptpositionalpropertyaccessinObjects[duplicate]【发布时间】:2020-06-0311:17:56【问题描述】:我有以下JavaScript对象:"_embedded":"dealerListItemDToes":[...,...]名为“dealerListItemDToes”的属性... 查看详情

JSP中的Javascript getCurrentYear [重复]

】JSP中的JavascriptgetCurrentYear[重复]【英文标题】:JavascriptgetCurrentYearinJSP[duplicate]【发布时间】:2019-07-2215:36:45【问题描述】:我正在尝试使用JS在JSP页面中显示当前年份。<scriptlanguage="javascript"type="text/javascript">document.write(getC... 查看详情

监视 JavaScript 中的对象属性更改 [重复]

】监视JavaScript中的对象属性更改[重复]【英文标题】:WatchforobjectpropertieschangesinJavaScript[duplicate]【发布时间】:2010-11-1904:05:36【问题描述】:可能重复:JavascriptObject.Watchforallbrowsers?我刚刚阅读了Mozilla的watch()method文档。看起来很... 查看详情

javascript中的typeof()函数错误[重复]

】javascript中的typeof()函数错误[重复]【英文标题】:typeof()functionerrorsinjavascript[duplicate]【发布时间】:2012-08-0204:09:37【问题描述】:可能重复:Istherea(built-in)wayinJavaScripttocheckifastringisavalidnumber?我有一个HTML输入搜索栏<formclass... 查看详情

javascript 闭包中的 (...()) 与 (...)() [重复]

】javascript闭包中的(...())与(...)()[重复]【英文标题】:(...())vs.(...)()injavascriptclosures[duplicate]【发布时间】:2012-02-0503:52:55【问题描述】:我知道这很愚蠢,但这之间有什么区别:(function()varfoo=\'bar\';)();还有这个?(function()varfoo=\'ba... 查看详情

javascript去除数组中的重复值

javaScript去除数组中的重复值//js数组去除重复的方法:ps:forEach是ECMA5中Array新方法中最基本的一个,就是遍历Array.prototype.unique=function(){varresult=[];this.forEach(function(val){if(result.indexOf(val)<0){result.push(val);}})returnr 查看详情

- JavaScript 中的 0 VS ( - 0) [重复]

】-JavaScript中的0VS(-0)[重复]【英文标题】:-0VS(-0)inJavaScript[duplicate]-JavaScript中的0VS(-0)[重复]【发布时间】:2018-01-2011:19:36【问题描述】:在ChromeJavaScript控制台中,为什么将语句-0括在括号中会更改返回值?-0//Returns-0(-0)//ReturnsNaN... 查看详情

javascript中的打印/警报数组[重复]

】javascript中的打印/警报数组[重复]【英文标题】:print/alertarrayinjavascript[duplicate]【发布时间】:2016-02-1611:52:46【问题描述】:我在javascript中有一个数组,我想打印/提醒它(不更改数组)。我的代码是这样的:functionmyFunction()varf... 查看详情

JavaScript中的对象比较[重复]

】JavaScript中的对象比较[重复]【英文标题】:ObjectcomparisoninJavaScript[duplicate]【发布时间】:2019-01-2801:22:19【问题描述】:在JavaScript中比较对象的最佳方法是什么?例子:varuser1=name:"nerd",org:"dev";varuser2=name:"nerd",org:"dev";vareq=user1==us... 查看详情

Javascript中的sleep() [重复]

】Javascript中的sleep()[重复]【英文标题】:sleep()inJavascript[duplicate]【发布时间】:2011-03-0909:13:36【问题描述】:假设由于某种奇怪的原因我想阻止Javascript执行一段时间,我该怎么做。JS中没有sleep()。请不要说做一个while()循环,因... 查看详情

检查元素是不是是javascript中的对象[重复]

】检查元素是不是是javascript中的对象[重复]【英文标题】:checkingifanelementisanobjectinjavascript[duplicate]检查元素是否是javascript中的对象[重复]【发布时间】:2021-11-0621:44:18【问题描述】:我正在使用下面的代码来检查一个元素是否... 查看详情

在javascript中获取select中的选项值[重复]

】在javascript中获取select中的选项值[重复]【英文标题】:Gettheoptionvalueinselectinjavascript[duplicate]【发布时间】:2012-08-0310:28:01【问题描述】:可能重复:HowtogettheselectedvalueofdropdownlistusingJavaScript?Howtogetthevalueofaselectedtextinjavascript& 查看详情

访问 JSON 数组中的对象 (JavaScript) [重复]

】访问JSON数组中的对象(JavaScript)[重复]【英文标题】:AccessingObjectsinJSONArray(JavaScript)[duplicate]【发布时间】:2012-12-2211:18:57【问题描述】:可能重复:Ihaveanesteddatastructure/JSON,howcanIaccessaspecificvalue?我有一个服务,它返回JSON数组中... 查看详情

JavaScript中的分区[重复]

】JavaScript中的分区[重复]【英文标题】:PartitioninginJavaScript[duplicate]【发布时间】:2012-07-0521:56:57【问题描述】:请考虑一个数组,例如:arrayAll=[1,2,3,4,5,6,7,8,9]是否有包可以进行分区获取:arrayALLPartionned=[[1,2,3],[4,5,6],[7,8,9]]我可... 查看详情