JavaScript如何创建,全局变量

简介: JavaScript如何创建,全局变量

在JavaScript中,创建全局变量有几种方式,但需要注意的是,全局变量可能会导致命名冲突和意外的副作用,因此建议谨慎使用。以下是一些创建全局变量的方法:

1. 直接在全局作用域中声明变量

在函数外部声明的变量会自动成为全局变量。在浏览器环境中,这通常意味着变量会被添加到window对象上(在非严格模式下)。

javascript复制代码
 var globalVar = "我是一个全局变量";  
 
   
 
 console.log(globalVar); // 输出: 我是一个全局变量  
 
 console.log(window.globalVar); // 在浏览器环境下,输出: 我是一个全局变量


2. 在函数内部不使用var、let或const声明变量

在函数内部,如果直接赋值给一个未声明的变量(即不使用var、let或const),那么这个变量也会成为全局变量(在非严格模式下)。但请注意,这种做法是不推荐的,因为它可能导致意外的行为,并且在严格模式下会导致错误。

javascript复制代码
 function createGlobal() {  
 
     globalVarInsideFunction = "我也是一个全局变量";  
 
 }  
 
   
 
 createGlobal();  
 
 console.log(globalVarInsideFunction); // 输出: 我也是一个全局变量


3. 直接在window对象上添加属性

在浏览器环境中,你可以直接在window对象上添加属性来创建全局变量。这种方法在所有模式下都有效,但同样需要谨慎使用。

javascript复制代码
 window.anotherGlobalVar = "通过window对象创建的全局变量";  
 
   
 
 console.log(anotherGlobalVar); // 输出: 通过window对象创建的全局变量  
 
 console.log(window.anotherGlobalVar); // 输出: 通过window对象创建的全局变量


4. 使用this关键字(在全局作用域中)

在全局作用域中,this通常指向全局对象(在浏览器中是window)。因此,你也可以通过this来创建全局变量。

javascript复制代码
 this.globalVarUsingThis = "使用this关键字创建的全局变量";  
 
   
 
 console.log(globalVarUsingThis); // 输出: 使用this关键字创建的全局变量  
 
 console.log(window.globalVarUsingThis); // 在浏览器环境下,输出: 使用this关键字创建的全局变量


注意事项

避免使用全局变量:尽可能避免使用全局变量,因为它们可能导致命名冲突和难以追踪的bug。

使用模块或闭包:考虑使用JavaScript模块(如ES6模块)或闭包来封装你的变量和函数,以保持代码的封装性和可维护性。

严格模式:在JavaScript文件的顶部添加"use strict";可以启用严格模式,这有助于避免一些意外的全局变量创建(如函数内部未声明的变量)。

image.png

相关文章
|
7月前
|
JavaScript 前端开发 安全
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(三)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
7月前
|
存储 JavaScript 前端开发
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(一)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
2月前
|
存储 JavaScript 前端开发
Vue.js项目中全面解析定义全局变量的常用方法与技巧
Vue.js项目中全面解析定义全局变量的常用方法与技巧
46 0
|
4月前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么?
js中this是指向的哪个全局变量,改变this指向的方法有什么?
21 0
|
7月前
|
JavaScript 前端开发
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量(二)
闭包治愈“全局变量恐惧症”,利用闭包实现JavaScript私有变量
|
7月前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么
js中this是指向的哪个全局变量,改变this指向的方法有什么
43 0
|
JavaScript 前端开发
【JS 经典面试题】全局变量和局部变量
【JS 经典面试题】全局变量和局部变量
116 1
|
JavaScript 前端开发
JavaScript 全局变量
JavaScript 全局变量
76 0
|
存储 自然语言处理 JavaScript
JS全局变量
1. Scope(作用域) 2. Lexical Environments (词法环境) 3. 全局对象(global object) 4. 浏览器环境下的globalThis 5. 全局环境(global envrionment) • Script 作用域 和Module 作用域 • 生成变量: 声明环境记录 vs 对象环境记录 • 访问变量 • 全局ECMAScript变量和全局宿主变量 6. 一图胜前言
111 0
|
自然语言处理 JavaScript 前端开发
【译】JavaScript的全局变量到底是怎么工作的
【译】JavaScript的全局变量到底是怎么工作的
111 0
【译】JavaScript的全局变量到底是怎么工作的