处理循环变量的重复声明警告

Ilya Tsuryev提出了一个问题:Dealing with duplicate declaration warning for loop variables,或许与您遇到的问题类似。

回答者user66001Oleg给出了该问题的处理方式:

JavaScript has many constructions which look like well-known constructions in other computer languages. It's dangerous for JavaScript to interpret the construction in another way as most other computer languages.

If somebody who doesn't know JavaScript good enough (the common case by the way) sees the construction like

--- ---- ---- ------ ---- -
    -- ---- ---- ----
-

or sees declaration of the variable in the block

-
    --- --
    ------ ----
    -
        --- --
        -- ---- ----
    -
-

then most readers will think that block level variables will be defined. JavaScript don't have block level variables. All variables will be interpreted as function level defined.

So I never define variables inside of the code if the code is not just some test code which will be written for 5 min only. The main reason is that I don't want to write code and use language constructions which could be misunderstood.

By the way JSLint finds defining of variables inside of block such bad style that it stop processing of the code analysis. There are no JSLint options which could change this behavior. I find the behavior of JSLint not good, but I agree that declaration of variables inside of for loop is bad because it will be read by most persons as code with local loop variables, which is incorrect.

If you use

--- ---- ---- ------ ---- -
    -- ---- ---- ----
-
-- ---- ----- ---- ----
--- ---- ---- ------ ---- -
    -- ------ ---- ----
-

then JavaScript moves all declarations of variables at the beginning of the function for you. So the code will be as

--- - - ---------- - - ---------- -- --------- ----------- ----- ---- -- -------
                                  -- -- --- --- - - ----------

--- ----- ------ ---- -
    -- ---- ---- ----
-
-- ---- ----- ---- ----
--- ----- ------ ---- -
    -- ------ ---- ----
-

So please think about other readers of the code. Don't use any constructions which could be interpreted in the wrong way.

希望本文对你有帮助,欢迎支持JavaScript中文网

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/24885


猜你喜欢

  • 在推特引导弹出数据内容使用HTML标签

    在推特中,我们经常会看到一些有趣的弹出文本或图片。这些弹出窗口是通过使用Twitter卡片来实现的。但是,很多人想知道是否可以在Twitter卡片中使用HTML标签来呈现更复杂的数据内容。

    7 年前
  • 处理谷歌地图中的单击事件,忽略双击

    处理谷歌地图中的单击事件,忽略双击 在使用谷歌地图 API 开发前端应用时,我们常常需要对地图上的单击事件进行处理,以实现一些交互效果,比如单击一个标记点后弹出信息窗口等等。

    7 年前
  • 获取元素值的几种方式

    在前端开发中,获取元素值是一个非常基础的操作。本文将介绍一些常用的获取元素值的方法。 1. 使用 id 获取元素值 使用 document.getElementById() 方法可以根据元素的 id ...

    7 年前
  • 如何在一页上添加两个谷歌图表?

    在前端开发中,图表展示是非常常见的需求之一。而谷歌图表(Google Charts)是一套优秀的图表库,可以方便地生成各种类型的图表。本文将介绍如何在同一页上添加两个不同类型的谷歌图表。

    7 年前
  • 我如何模拟纯JavaScript、CSS“激活mouseover:悬停”吗?

    在前端网页开发中,我们经常需要实现鼠标悬停(mouseover)效果。一般情况下,可以通过CSS的:hover伪类或者JavaScript的mouseover事件来实现。

    7 年前
  • `<U+003C>` 意味着什么?

    在 Web 开发中,&lt;U+003C&gt; 是一个常见的字符,也就是我们熟知的小于号 "&lt;"。它在 HTML 中用来标记元素开始,比如 &lt;div&gt;、&lt;p&gt; 等等,而...

    7 年前
  • 用 JavaScript 设置 HTML > < 的内容

    在前端开发中,我们常常需要设置 HTML 元素的文本内容。然而,在某些情况下,我们需要在文本中使用大于号(&gt;)或小于号(&lt;),这会导致浏览器将它们解析为标签,从而破坏页面结构。

    7 年前
  • 在SVG矩形中追加文本

    SVG(可缩放矢量图形)是一种基于XML的标记语言,用于描述二维图形和动画。在前端开发中,我们经常需要在SVG图形上添加文本信息。本文将介绍如何在SVG矩形中添加文本。

    7 年前
  • 在iOS 5下使用document.ontouchmove处理滚动事件

    在移动端Web开发中,我们经常需要对页面进行滚动操作。而在iOS 5及以下的版本中,浏览器不支持overflow:scroll属性,因此我们需要通过JavaScript来实现滚动效果。

    7 年前
  • 如何在所有浏览器上支持`<input type="date">`?

    随着 HTML5 的普及,&lt;input type="date"&gt; 已经成为网页上展示日期的标准方式。但是,各个浏览器对该输入类型的支持并不一致,有些浏览器甚至完全不支持。

    7 年前
  • jQuery的事件:preventDefault()在Firefox中不起作用

    在前端开发中,jQuery是一个广泛使用的JavaScript库,它提供了许多方便易用的功能和API来简化开发工作。其中之一是事件处理程序,允许我们响应用户交互和其他类型的事件。

    7 年前
  • JavaScript:访问父类作用域

    在JavaScript中,函数可以嵌套定义在其他函数中。当这样做时,内部函数可以访问外部函数的变量和函数。但是,如果内部函数需要访问外部函数的父级函数(外部函数的外层函数)的变量或函数,则需要使用一些...

    7 年前
  • 验证外部脚本是否已加载

    在前端开发中,我们经常需要引入第三方库或者自己编写的 JavaScript 脚本。为了确保脚本的正确执行,我们需要验证它们是否已经成功加载。 如何验证? 方式一:判断全局变量 通常情况下,外部脚本成功...

    7 年前
  • 如何在contenteditable元素的HTML替换文本?[重复]

    FakeRainBrigandFrodik提出了一个问题:How to replace selected text with html in a contenteditable element? [d...

    7 年前
  • 如何在我的 WordPress 插件中包括 CSS 和 jQuery?

    WordPress 是一个非常流行的内容管理系统,因此开发者们经常需要编写 WordPress 插件来扩展其功能。然而,很多开发者在编写插件时都遇到了一个问题:如何在插件中包含 CSS 和 jQuer...

    7 年前
  • jQuery选项卡导致屏幕“跳转”

    问题描述 在使用jQuery实现页面选项卡切换时,有时会出现屏幕短暂的“跳转”现象,给用户带来不良体验。这个问题通常出现在选项卡数量较多,且内容较为复杂的情况下。 原因分析 当我们点击选项卡切换时,j...

    7 年前
  • JavaScript 不能合并库文件的原因及其影响

    JavaScript 库是 Web 前端开发中不可少的一部分。通常,我们会使用许多不同的库来帮助我们构建网站或应用程序,例如 jQuery、React、Vue 等等。

    7 年前
  • 离子含量与离子头条重叠:详解及应用指导

    背景 在前端开发中,离子含量(ionic content)和离子头条(ionic header)是两个经常使用的组件。然而,在某些情况下,这两个组件可能会出现重叠的问题,导致界面显示异常。

    7 年前
  • 如何在前端实现倒计时

    在前端开发中,倒计时是一项非常常见的功能。例如,电商网站可能会在促销活动期间显示某个产品的倒计时,以增加购买者的紧迫感。在本文中,我们将介绍如何在前端中实现一个可重用的倒计时组件。

    7 年前
  • IE8 中的“被拒绝访问”错误

    在开发前端网页时,我们常常会遇到“被拒绝访问”(Access Denied)的错误。这通常是由于浏览器的安全策略所导致的,而在 IE8 中,这个问题尤为严重。本文将介绍 IE8 中“被拒绝访问”错误的...

    7 年前

相关推荐

    暂无文章