在 .js 文件中声明全局变量是不好的做法吗?

2024-01-09

我有一个 .js 文件,我正在其中初始化两个使用的参数 在一个单独的函数中:

var submyvar1;
var submyvar2;

function init(myvar1 , myvar2){
    submyvar1= myvar1;
    submyvar2= myvar2;
}

function (){
    //subvar1 & subvar 2 used here
}

像这样声明全局变量是一种不好的做法吗?

如果是这样,有什么替代方法,将整个 .js 文件包装在一个对象中?


至少是不好练习时,你可以使用立即调用函数表达式:

(function() {
    var x;
    var y;

    window.init = function(xValue, yValue) {
        x = xValue;
        y = yValue;
    }

    window.doWhateverYouWant = function() {
        console.log(x + y);
    }
}());

你可以使用这个模式除非您需要在此 .js 文件之外访问全局变量,当 .js 文件之间交叉访问或<script>元素是必需的,全局变量是一个简单的解决方案(尽管您可以使用 AMD 或其他东西代替)。

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

在 .js 文件中声明全局变量是不好的做法吗? 的相关文章

  • 为什么新行上的 return 语句不返回任何值? [复制]

    这个问题在这里已经有答案了 考虑以下情况 function func1 return hello world function func2 return hello world console log func1 console log f
  • 使用 getElementById 在 javascript 中使用正则表达式进行 Html 表单验证?

    我想使用正则表达式验证 html 表单的示例模式 AAA 111 2222 aa 1234 目前 我的代码要么为所有输入返回 正确 要么为所有输入返回 不正确 并且我无法弄清楚我的问题出在哪里 var x document getEleme
  • 拖放图像上传在服务器上不起作用

    我正在尝试实现拖放图像上传 我在网上找到了一个相当简单的脚本并适合我的使用 在我的本地安装中 文件上传得很好 但在服务器上却不行 从我的调试尝试来看 SERVER HTTP X FILENAME 甚至没有被 php 设置 我尝试了以下方法
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • 如何正确关闭 Node.js Express 服务器?

    我需要在收到回调后关闭服务器 auth github callback网址 与平常一样HTTP API http nodejs org docs latest api http html关闭 服务器目前支持server close call
  • Angular UI.Bootstrap 单选按钮在 ng-repeat 中表现得很奇怪[重复]

    这个问题在这里已经有答案了 我在 Angular 的 ui bootstrap 中动态生成无线电模型的选项时遇到问题 我想我可以简单地对数组进行 ng repeat 使用 btn radio 属性的内容 如下所示 in the contro
  • 如何防止在达到一定字符数后向文本区域输入内容?

    使用下面的代码 任何超过指定最大值的输入都将被删除 但这会产生一种效果 即键入字符后立即将其删除 我宁愿简单地阻止输入字符
  • Javascript 访问 Disqus 评论文本框?

    我正在开发一个浏览器扩展 它应该允许我访问文本框中的评论 帖子 现在很多网站都使用 Disqus 作为评论方式 但在输入文本时我无法找到访问 Disqus 评论框的方法 Disqus API 也没有透露太多信息 有人知道访问它的方法吗 解决
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • 传单 - 导入 Geojson - Angular 6

    我尝试将 GeoJson 文件导入到 Angular 的应用程序 6 中的传单中 通过这个解决方案 我的 geojson 是在 leafletmap 中绘制的 但我有这个错误 我无法构建我的应用程序 有人知道一种解决方案吗 错误 TS234
  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • 如何从普通 JavaScript 中的输入获取对象

    例如 我有 3 个输入
  • html输入数字,min + step,使step忽略min?

    是否有可能使step忽略min属性
  • 当元素具有多个类时如何在 switch 语句中检查 className

    在下面的示例中 我只想单击该选项以在警报中显示 我正在尝试使用 switch 语句来确定单击了哪个类 如果我的 div 不包含多个类 则我的示例将有效 我尝试使用classList contains在我的 switch 语句中无济于事 有没
  • 如何从 jQuery 获取 ajax 请求下载 Excel

    我有一个 Spring MVC 视图 它提供了一个 excel 文件 但是 我现在修改了该过程 以便用户获得一个模式框 他们可以在下载 excel 之前在其中选择一些选项 这些选定的选项将发送到视图 我的请求看起来像这样 get downl
  • 在 HTML5 画布上创建颜色选择器

    如何在 HTML5 画布上绘制颜色选择器 一个基本的例子是使用getImageData http jsfiddle net eGjak 60 http jsfiddle net eGjak 60 var ctx cv get 0 getCo
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示
  • 谷歌地图绘制两点之间的路线

    我编写了这段无辜的 JavaScript 代码 它允许用户创建两个标记并绘制它们之间的路线 它不起作用 相反 它给出了一个奇怪的错误 Uncaught TypeError Cannot read property ya of undefin
  • 如何制作饼图聚合数据源?

    Using 适用于 ASP NET MVC 的 Kendo UI 完整版 http www kendoui com 版本 2013 3 1119 2013年11月20日 如果我有这段代码 status chart kendoChart da
  • 相当于 JavaScript 中 Ruby 的each_cons

    许多语言都曾提出过这个问题 但 javascript 却没有 Ruby 有方法Enumerable each cons https devdocs io ruby 2 5 enumerable method i each cons看起来像这

随机推荐

  • 如何使用 slick 3.2 + 在 select 子句中编写嵌套查询

    有没有办法使用 slick 3 2 创建嵌套选择 基本上我需要的所有内容都在这里描述如何在 select 子句中编写嵌套查询 https stackoverflow com questions 14920153 how to write n
  • 在 ES6 代码中扩展 EcmaScript 5 类

    我想在新项目中使用 EcmaScript 6 通过 Browserify 和 Babelify 但它依赖于用 ES5 编写的第三方库 问题是在我的项目中创建从库中的子类扩展的子类 E g Library written in ES5 fun
  • 如何动态添加where子句来查询使用nestjs查询生成器生成的查询?

    我正在开发一个 API UI 的要求基于我将收到过滤结果的搜索字段的值 UI 上有很多搜索字段 示例代码 async getRoomsByMember active boolean email string Promise
  • 与 Ionic Framework 一起使用时,字符集 UTF 8 不起作用

    在我的网络应用程序上 我有像 这样的字符 并且我有元标记但这些字符不会显示在浏览器中 它们显示为问号 我正在使用 Ionic 框架 我缺少什么 用VS打开文件并更改保存选项File gt Advanced Save Options gt U
  • 如何覆盖打字稿中的属性?

    由于当前的语言限制 这可能是不可能的 但我正在使用最新的 TS 1 8 10 并且遇到了 ui grid 打字问题 这isRowSelectable属性于IGridOptions被定义为可选布尔值 但文档说它是一个函数 确实如此 我试图将布
  • Typescript 交换数组项目

    如何使用交换两个元素打字稿 elements elements elements push item1 elements push item2 elements push item3 elements push item4 elements
  • 将浮动子 DIV 置于具有流体宽度的父 DIV 中

    我有以下 HTML div div class child Box1 div div class child Box2 div div class child Box3 div div class child Box4 div div cl
  • Chrome 扩展程序可以在 Chrome 错误页面上运行代码吗? (即 ERR_INTERNET_DISCONNECTED)

    我正在尝试创建一个 chrome 扩展 在运行恐龙迷你游戏的 chrome 错误页面上运行一些 javascript 代码 尝试在选项卡上运行executeScript 时出现权限错误 这是我的代码 清单 js manifest versi
  • 复制 JSESSIONID cookie 时防止复制会话

    背景 我在 tomcat 上部署了一个 javaee web 应用程序 它使用基于表单的身份验证 当 Web 服务器收到登录请求时 它会将请求发送到验证用户登录 用户 ID 和密码 的专用身份验证服务 身份验证成功后 用户会话将保留在 We
  • Angular 5 路由 - 空路径不匹配

    我很困惑这个路由有什么问题 应用程序模块路由 path path1 canActivate Path1Guard loadChildren path1 path1 module Path1Module 路径1 路由 模块 const pat
  • 网站的 HttpContext.Current.Request.ApplicationPath

    我们在虚拟目录下部署了一个 Web 应用程序 现在我们想将其移至其自己的网站进行 SSL 配置 然而 有很多HttpContext Current Request ApplicationPath因此 应用程序无法按预期运行 谁能帮我看看有什
  • 这些 javascript include 定义有区别吗

    两者都包含相同的文件 两者都有效 但是其中一种比另一种有什么优势吗 Scripts jquery validate unobtrusive min js gt 在第一种情况下 Url Content 将相对路径转换为应用程序绝对路径 在第二
  • CursorIndexOutOfBoundException:请求索引 1,大小为 1

    又是我 遇到了 Android 版 sqlite 的问题 我目前得到一个 CursorIndexOutOfBoundsException 请求索引 1 尺寸为 1 但是 我遇到了索引 1 的异常 然后插入了一个cursor moveToFi
  • 基于 SVN 中的预提交构建

    我知道已经有人问过这个问题 但我们真的很想拒绝任何提交文件的尝试 这会破坏主干中的项目 拒绝已提交文件的决定基于所提交文件所属项目的构建过程的结果 我知道在预提交阶段 存储库无法同时访问 但这对我们来说不是问题 因为我们的构建速度非常快 并
  • 如何在 Angular 2 Typescript 中复制到剪贴板?

    有没有办法在 Angular2 Typescript 框架中复制剪贴板 多浏览器 中的文本 我只找到使用 Javascript 的来源 例如 document execCommand copy 您可以围绕以下内容实现 Angular2 指令
  • MIPS 上适用于 Android 的免费 Pascal

    尝试将 Delphi 库移植到 Android Free Pascal 支持 Android ARM 可以使用适用于 Windows 的预构建编译器 不过 Android NDK 现在也支持 MIPS 和 x86 FPC 人员的支持状况如何
  • Pandas 插值给出奇怪的结果

    我正在使用 Pandas 及时插值数据点 但是在重采样和插值时 使用不同的重采样率时 相同的插值时间会得到不同的结果 这是一个测试示例 import pandas as pd import datetime data pd DataFram
  • 将 15 添加到 R 中列的每个数字[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我是 R 新手 我正在尝试为特定列的数据集中的每个数字添加 15 并且想知道这是如何实现的 任何帮助将不胜感激 谢谢 假设你有一个 data
  • 如何禁用 DataGridView CheckBox 列中的特定复选框单元格

    我有一个带有 DataGridView 控件的 winForm 它包含 5 列 其中一列是 CheckBox 列 我想根据同一行另一列中存在的值启用 禁用该列的复选框单元格 我可以使用禁用整个列 但它使整个列处于禁用状态 这是 DataGr
  • 在 .js 文件中声明全局变量是不好的做法吗?

    我有一个 js 文件 我正在其中初始化两个使用的参数 在一个单独的函数中 var submyvar1 var submyvar2 function init myvar1 myvar2 submyvar1 myvar1 submyvar2