JS中如何定义全局变量

三种方法

1.在js的function外定义一个变量

var name=‘测试‘;

function XX(){

       alert(name);

}

2.不使用var,直接给定义变量,隐式的声明了全局变量

name=‘测试‘;

function XX(){

alert(name);

}

这种方法,即使该变量是在一个function内,当该function被执行后它变成了全局变量 ---- 但是function不执行它就不被其他function知道,所以最好定义在function外

3.使用window.变量名定义为全局变量,但是注意:调用时候建议写上window.变量名,当然也可以不写;我们常用的document.getXXX的document对象就是window的

window.name=‘测试‘;

function XX(){

alert(window.name);

}

全局变量的优点:

可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。

全局变量的缺点:
(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。
(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。
(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。

时间: 2024-10-12 07:50:16

JS中如何定义全局变量的相关文章

在vue项目中 如何定义全局变量 全局函数

如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数 定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或者在其它地方需要使用时,引入该模块便可. 全局变量模块文件: Global.vue文件: <script> const serverSr

JS中函数定义的三种格式

第一种:function  fun1(参数1,参数2...){            //通过创建函数名来定义函数 函数体: } 第二种:var fun2=new Function("参数1,参数2...","函数体");         //通过创建变量来定义函数 第三种:function(){                //匿名函数 函数体: } 说明: 1,在调用时,可以为没有参数的函数传递参数:但如果没有传递参数给有参数的函数时,会默认参数为undefi

js中局部变量和全局变量的易混点

1.以下输出的是: undefined局部变量 <script type="application/javascript"> var scope="全局变量"; function cal(){ document.writeln(scope+"<br />"); var scope="局部变量";                                //(1)处 document.writeln

C#中如何定义全局变量及在各窗体中使用全局变量

using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.IO; namespace NewTest { public class PublicValue { public static string FileName; public static int[] aa; } /// <summary> /// Description

js中的定义

执行环境:执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为,每个执行环境都有一个与之关联的 变量对象:环境中定义的所有变量和函数都保存在这个对象中.(在函数中这个变量对象叫活动对象) 作用域链:当代码在一个环境中执行时,会创建变量对象的一个作用域链,作用域链的用途是保证对执行环境有权访问的所有变量和函数的有序访问. 作用域链本质上是一个指向变量对象的指针列表,他只引用但不实际包含变量对象. 闭包中所保存的是整个变量对象而不是某个特殊的变量 闭包是指有权访问另一个函数作用域中的变量

JS中函数定义和函数表达式的区别

摘要: (function() {})();和(function(){}());的区别 Javascript中有2个语法都与function关键字有关,分别是: 函数定义:function FunctionName(FormalParameterList) { FunctionBody } 函数表达式:function [FunctionName](FormalParameterList) { FunctionBody } 从语法的定义上看,这两者几乎是一模一样的(唯一的区别是函数表达式可以省略

taro中如何定义全局变量

打开 config/dev.js (橙色为全局变量) module.exports = { env: { NODE_ENV: '"development"', }, defineConstants: { BASE_URL: JSON.stringify('https://****.com/api'), IMG_URL: JSON.stringify('https://****.com/url') }, mini: {}, h5: {} } 原文地址:https://www.cnblog

简单说明一下JS中的函数声明存在的“先使用,后定义”

首先看一段JS代码,其中使用了两种方式声明了两个函数,分别在不同的地方调用两个函数: 1 <script> 2 'use strict'; 3 // 输出hello函数 4 console.log(hello); 5 // 定义hello函数 6 function hello(){ 7 alert("Hello"); 8 } 9 // 输出hi变量 10 console.log(hi); 11 // 给hi赋一个函数 12 var hi = function(){ 13 a

JS中的函数声明存在的“先使用,后定义”

首先看一段JS代码,其中使用了两种方式声明了两个函数,分别在不同的地方调用两个函数: 1 <script> 2 'use strict'; 3 // 输出hello函数 4 console.log(hello); 5 // 定义hello函数 6 function hello(){ 7 alert("Hello"); 8 } 9 // 输出hi变量 10 console.log(hi); 11 // 给hi赋一个函数 12 var hi = function(){ 13 a