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>


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

 

跨文件的变量处理(面向前端)
首先,我们知道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;



结果显示:

Java公共变量和公共方法 js 公共变量_Java公共变量和公共方法

 

 

在其他的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);

显示结果:

Java公共变量和公共方法 js 公共变量_全局变量_02

 

 

补充: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定义的局部变量。