基于自动分号插入 JS 规则的有趣错误。需要解释

2024-04-06

今天我为一些编程竞赛编写了代码。当我运行它时,我因为错误而感到惊讶。无法读取未定义的属性“forEach”在一个看起来像“无错误空间”的地方。

sum = 0
            [-1,0,1].forEach(deltar =>{...});

当我在后面添加分号时sum变量赋值代码开始工作。

sum = 0;
            [-1,0,1].forEach(deltar =>{...});

让人非常好奇的是JS解释器在这里不匹配的行为是什么?怎么办JS搞乱integer and array之后?

这是函数的完整代码,用于完整描述变量声明。

function boxBlur(img) {
    let [h,w] = [img.length-1,img[0].length-1];
    let [answer,sum,tmp] = [[],0,[]]
    for(let row = 1; row < h; row += 1){
        tmp = []
        for(let clmn = 1; clmn < w; clmn += 1){
            sum = 0;
            [-1,0,1].forEach(deltar =>{
                [-1,0,1].forEach(deltac =>{
                    sum += img[row+deltar][clmn+deltac]
                });
            });
            tmp.push(parseInt(sum/9));
        }
        answer.push(tmp);
    }
    return answer;
}

1,2,3 === 3 

逗号运算符 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

so

[1,2,3] -> [3] i.e. is property named 3 

括号表示法 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors#Bracket_notation

所以

sum = 0[3] is undefined - 

因为 Number(0) 没有名为 3 的属性

进一步说明

var sum = 0
[1,2,3,'constructor']

console.log(sum);

现在代码相当于

var sum = 0['constructor']

or

var sum = 0..constructor

正如您在控制台中看到的那样Number对象构造函数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于自动分号插入 JS 规则的有趣错误。需要解释 的相关文章

随机推荐

  • Pandas 替换非零值

    我知道我可以用以下内容替换所有 nan 值df fillna 0 并将单个值替换为df replace 1 但是如何用单个值替换所有非零值 使用布尔索引 df df 0 value
  • 在 R 中使用 readHTMLTable 删除行

    我正在尝试使用 readHTMLTable 从 NOAA 提取模型数据 据我从 HTML 中可以看出 我试图获取的表格有多个字幕 其中每个字幕都由跨越所有列的单个单元格组成 由于某种原因 这导致 readHTMLTable 忽略紧随副标题的
  • 如何安装Android SDK Platform-Tools 24.0.0?

    我正在按照设置 Android N 预览版的指南进行操作https developer android com preview setup sdk html https developer android com preview setup
  • MVC Get 与 Post

    在研究 MVC 概念时 我了解到在 GET 操作中包含代码来更改服务器对象的状态 数据库更新等 并不是一个好习惯 缓存返回数据 已被给出作为其原因 有人可以解释一下吗 提前致谢 这是 HTTP 标准规定的 GET 动词应该是幂等且安全的 9
  • Python ConfigParser 问题

    ConfigParser 的配置文件是否必须命名为 Config ini 才能工作 我希望名称为 1Config ini 以便它显示在文件夹目录的顶部 这就是我目前拥有的 config ConfigParser ConfigParser c
  • 如何在 3.4+ 中禁用 JooQ 的自我广告消息?

    我是 JooQ 的忠实粉丝 但不幸的是 自从从 3 3 升级以来 每次在我的代码退出之前 它都会向控制台打印一条非常烦人的消息 Feb 02 2015 7 28 06 AM org jooq tools JooqLogger info IN
  • 如何将对象传递到 Xamarin Forms 自定义渲染器?

    如何将某个对象的实例传递给 Xamarin Formscustom render 这是自定义渲染器 public class LoginPageRenderer PageRenderer public override void ViewD
  • 程序集具有强名称,但我收到错误消息,指出需要强名称

    我正在尝试将第三方 COM dll 加载到我的应用程序中 一切都构建得很好 但是当我运行应用程序时 我不断从应用程序中收到此消息 无法加载文件或程序集 程序集 版本 1 0 0 0 文化 中性 PublicKeyToken null 或其依
  • 具有以编程方式确定的常量 DEFAULT 值的 ALTER TABLE

    我正在尝试向表 Employee 添加一列 MSSQL 2005 并使用另一个表 Department 的主键的默认约束 然后我将使该列成为该表的 FK 本质上 如果未提供 DepartmentID 这将根据部门名称将新员工分配到基础部门
  • 使用 df1 中的值从 df2 检索值,其中 df2 列和索引包含一系列值

    我有一个数据框 其中包含员工信息 例如 Name performance factor 1 和 Performance factor 2 我有另一个数据框 我根据 Performance factor 1 和 Performance act
  • 在 Android 中处理来电

    我想在 Android 中处理来电 实际上我想设置一个持续时间 如果我的手机接到任何电话 就会自动向他们每个人发送一条消息 有任何想法吗 只需将您的课程扩展到PhoneStateListener并覆盖onCallStateChanged方法
  • Drupal 在视图中返回结果数

    我在 Drupal 中有一个视图可以过滤我的内容 它带回 7 行 我想要返回的只是返回的数字或结果 7 这可能吗 我尝试使用查看结果计数器 但它为每个结果返回一个数字 1 2 3 4 5 6 7 我只需要第七部分 所以在 SQL 中我会执行
  • 将范围转换为图像

    我正在寻找将气体范围保存为图片 jpg 的方法 类似于 Excel VBA 的东西 Range MainMatrixName CopyPicture Appearance xlScreen Format xlPicture copy Exc
  • 如何使用重塑包重塑此数据框[重复]

    这个问题在这里已经有答案了 我有一个相当大的数据框 结构如下 id x1 x2 x3 y1 y2 y3 z1 z2 z3 v 1 2 4 5 10 20 15 200 150 170 2 5 2 3 7 6 25 35 40 300 350
  • Jenkins 抛出 java.lang.StackOverflowError ——不仅仅是在 unstash 上

    2019 年 7 月 31 日更新该错误有时发生在 unstash 调用之前 但总是在同一服务器上 为了查看问题是否是由于 unstash 在需要覆盖文件的目录中工作引起的 我清理了该目录 但问题仍然发生 这次开始输出 转录 任何拼写错误都
  • Firebase:如何保持 Android 用户登录?

    我正在使用 Firebase SimpleLogin 启用电子邮件 密码身份验证 用户的创建和后续登录一切正常 然而 每当我离开应用程序 即使只有几秒钟 用户在我返回时永远不会登录 即 authClient checkAuthStatus
  • 安装 CakePHP 3 后出现空白页

    我已将 CakePHP 3 的新安装复制到网络酒店 在我的本地安装中 它运行没有问题并显示标准启动页面 但在网络酒店上我得到一个空白页面 如果我将 test php 放在 webroot 中 它会毫无错误地显示 如果我在 webroot i
  • 您可以在 React Native 中有条件地导入文件吗?

    情况 我正在开发一个针对同一应用程序具有不同版本的 React Native 项目 为此 我将使用适用于 Android 的应用程序风格 而对于 iOS 我将使用构建目标 我已经制作了一个本机 android 模块 可以返回正在使用的 an
  • 通过 powershell 将数据附加到现有 xml 文件中

    我可以使用 powershell 将节点添加到现有 XML 中吗 这是我所拥有的
  • 基于自动分号插入 JS 规则的有趣错误。需要解释

    今天我为一些编程竞赛编写了代码 当我运行它时 我因为错误而感到惊讶 无法读取未定义的属性 forEach 在一个看起来像 无错误空间 的地方 sum 0 1 0 1 forEach deltar gt 当我在后面添加分号时sum变量赋值代码