首页 > 编程语言 >JavaScript 中的全局变量 和局部变量

JavaScript 中的全局变量 和局部变量

时间:2022-09-29 14:37:49浏览次数:56  
标签:JavaScript console log 局部变量 JS var myA 全局变量

JS中声明全局变量主要分为显式声明或者隐式声明。
1.显示声明:
使用var(关键字)+变量名(标识符)的方式在function外部声明,即为全局变量;在function内部声明的是局部变量。

<script>
var  global= '我是全局变量';//全局变量
function a(){
var  part= '我是局部变量';//局部变量
console.log(global);
}

a(); //输出 '我是全局变量'
console.log(part) // part is not defined  ;()

</script>

2.隐式声明:
不使用var,直接给标识符赋值,这样就隐式声明了一个全局变量。即使该变量是在function内部声明的,但当该function被执行后声明的变量也是全局变量。

<script>
global= '我是全局变量global';//全局变量
function a(){
b = '我是在函数内部声明的全局变量b';//也是全局变量
console.log(global);
}
a(); //输出    我是全局变量global
console.log(b);//   输出 我是在函数内部声明的全局变量b
</script>

3.使用window全局对象来声明
全局对象的属性对应也是全局变量,详细如下:

<script>
window.global = '给你来一拳';
console.log(global);//输出 给你来一拳
</script>
————————————————

原文链接:https://blog.csdn.net/qq_27261333/article/details/69486540

 

 

跨文件的变量处理(面向前端)
首先,我们知道JavaScript是一种 Web 的编程语言。
它定义了网页的行为。
一个网页中可能会有很多JS文件。
那么这些文件中的变量是否作用于全局,即变量的跨文件调用问题。

JS是从上到下执行的,保证声明的在前,调用的在后就可以
JS允许重复声明,后覆盖前

下面是几个例子。
在HTML中利用< script >标签定义
定义的变量在引入的JS文件前即可。

<body>
<h1 id ="myA"></h1>
<h1 id ="myB"></h1>
<script>var myA=1;</script>
<script src='text1.js'></script>
</body>

//text1.js
document.getElementById("myA").innerText=myA;
myA=2;
document.getElementById("myB").innerText=myA;

结果显示:

 

 

在其他的JS文件中定义,通过< script >标签调用
JS文件中定义的全局变量,在其后面引入的JS文件中都生效。

<body>
<script src='text1.js'></script>
<script src='text2.js'></script>
</body>

//text1.js
var myA=2;

//text2.js
window.alert(myA);


显示结果:

 

 


补充:JS到JS跨文件的处理
不难发现,在面向前端时。可以通过< script >标签完成调用。
那在后台调用JS文件时(如通过控制台语句),不经过HTML文件的情况下,怎样实现跨JS文件调用。
这里,我们可以使用创建自己的外部JavaScript库的方式。
如在Node平台下,通过require()语句来引入;

隐式全局变量
我们都知道在JavaScript中,全局变量不一定要用var定义,但局部变量一定要用var定义。
所以默认不用var定义的变量就是全局变量。
但是有时候,不注意的代码书写方式可能会让我们犯一些错误。
譬如:

//text1.js
function myTest()
{
var myA=myB=1;
var myC=1,myD=1;
console.log(myA);
console.log(myB);
console.log(myC);
console.log(myD);
}
myTest();
console.log(myA);
//分别将console.log(myA);语句改为以下三条
//console.log(myB);
//console.log(myC);
//console.log(myD);

运行结果如下,其中函数运行的输出结果均为1。输出成功。
而console.log(myA)输出不成功,在于myA是局部变量

当将console.log(myA)改为而console.log(myB)后
值得注意的是,这里myB是一个隐式全局变量,可以成功输出1

console.log(myC)和console.log(myD)同console.log(myA)的输出结果一样,均不成功,即为局部变量。

其中,虽然myD前也无var定义,但因为前面的逗号表示和前一个的定义方式一样,所以这里它也是一个在函数内由var定义的局部变量。

————————————————

原文链接:https://blog.csdn.net/qq_39506222/article/details/103042615

标签:JavaScript,console,log,局部变量,JS,var,myA,全局变量
From: https://www.cnblogs.com/hphyyds/p/16741431.html

相关文章

  • JavaScript——事件监听
    事件监听    1、事件绑定      2、常见事件    ......
  • JavaScript构造函数
    一、什么是构造函数 构造函数(Constructor)的创建方式和普通函数一样。但通常首字母进行大写,用于和普通函数区分。 但是当一个函数创建好以后,我们并不知道它是不是构造......
  • 4类 JavaScript 内存泄露及如何避免
    译者|涂鸦码龙译文|http://jinlong.github.io/2016/05/01/4-Types-of-Memory-Leaks-in-JavaScript-and-How-to-Get-Rid-Of-Them/index.html简介内存泄露是每个开发者最......
  • JavaScript——基础语法
    书写语法  输出语句  变量  数据类型  运算符      ==与===区别:      ==:        1、判断类型是否一样,如果不一样,则进行类型转......
  • nginx 常用全局变量
    变量说明$args请求中的参数,如​​www.123.com/1.php?a=1&b=2的$args就是a=1&b=2​​$content_lengthHTTP请求信息里的"Content-Length"$conten_typeHTTP请求信息里的"Conten......
  • JavaScript异步加载的三种方式——async、defer、动态创建
    async和deferhtml4.0中定义了defer;html5.0中定义了async。如果没有defer和async,浏览器会立即加载并执行指定的JS脚本,并不会等待后续载入的文档元素。如果有async,加载后......
  • 【开发小技巧】01-如何使用JavaScript删除CSS属性?
    句法:element.removeProperty('property')实例1:<!DOCTYPEhtml><html><head><title>HowtoremoveCSSpropertyusingJavaScript?</title><style>......
  • javaScript--4 onchange 事件
    <!DOCTYPEhtml><html><head><title>事件</title></head><body><h2>----------------onchange事件--------------------</h2><!--onchange事......
  • 直播软件app开发,JavaScript应用定时器实现倒计时
    直播软件app开发,JavaScript应用定时器实现倒计时 <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title></head><body>手机号码:<inputtype="text"/><bu......
  • 直播开发app,JavaScript生成随机数
    直播开发app,JavaScript生成随机数<scripttype="text/javascript">//产生随机数functiongetRandom(min,max){vara=Math.floor((Math.random())*(max-1+min)+min)return......