1.使用var声明变量
在JavaScript中申明一个变量用var语句,使用等号=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,但是要注意只能用var申明一次。比如:
<script>
var num = 100;
console.info(num);
console.info(typeof(num));
num = '100';
console.info(num);
console.info(typeof(num));
</script>
运行结果:
100
number
100
string
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下:
int num = 100; // num是整数类型变量,类型用int申明
num = "100"; // 错误:不能把字符串赋给整型变量
2.使用var与不使用var声明变量的区别
在JavaScript中申明一个变量也可以不使用var.首先在函数体外加不加var,声明的都是全局变量。都是绑定到 window对象上的属性,例如:
<script>
num = 100; //与var num = 100; 效果相同。
console.log(num);
console.log(window.num);
</script>
运行结果:
100
100
注意:如果在函数内定义的变量不使用var,等同于在函数外声明了一个全局变量。例如:
<script>
//函数调用时,隐含着声明了一个全局变量。
//var num = 100;
function fn(){
num = 100; //默认绑定到window对象上。
}
fn(); //注意:这里方法一定要调用一下。
console.log(num);
console.log(window.num);
</script>
运行结果:
100
100
如果在函数内定义的变量不使用var或者let,同时函数外声明有同名变量,则全局变量值会被覆盖。例如:
<script>
num = 50;
function fn(){
num = 100;
}
fn();
console.log(num);
</script>
运行结果:
100
如果在函数内定义的变量使用var或者let,则一定是局部变量。例如:
<script>
num = 50;
function fn(){
var num = 100; //一定是局部变量
}
fn();
console.log(num);
</script>
运行结果:
50