定义变量的方式
JavaScript 是弱类型脚本语言,使用变量之前,可以无须定义,想使用某个变量时直接使用即可
- 隐式定义:直接给变量赋值
- 显式定义:使用 var 关键字定义变量
<script type="text/javascript">
// 隐式定义
a = "Hello JavaScript";
alert(a);
// 显式定义
var a;
a = true;
alert(a);
</script>
类型转换
js 支持自动类型转换
<script type="text/javascript">
var a = "3.145";
// 字符串变量 和 数值 执行算术运算
var b = a - 2;
// 字符串变量 和 数值 执行加法运算
var c = a + 2;
alert(b + "\n" + c);
</script>
原因:
➖:字符串不支持减法运算,所以系统自动将 字符串 转换成 数值
➕: 字符串可以用 加号 作为连接运算符,所以系统自动将 数值 转换成 字符串,并将两个字符串进行连接运算
强制类型转换
toString():将 布尔值、数值 转换成 字符串
parseInt():将 字符串、布尔值 等 转换成 整数
parseFloat():将 字符串、布尔值 等 转换成 浮点数
变量作用域
全局变量:在全局范围内定义的变量、不使用 var 定义的变量;可以被所有的脚本访问
局部变量:在函数里定义的变量,只在函数内有效
<script type="text/javascript">
var test = "全局变量";
function myFun(){
// 在函数内 不使用 var 定义的 age 也是全局变量
age = 20;
// 在函数内 使用 var 定义的是局部变量
var isMale = true;
}
myFun();
alert(test + "\n" + age);
alert(isMale);
如果 全局变量 和 局部变量 使用 相同的变量名,则 局部变量 将 覆盖 全局变量。
JavaScript 变量没有 块范围,与 Java 和 C 语言不同,比如 for循环内的变量在 for 循环外依然有效
变量提升
含义:变量声明总是会被解释器“提升”到函数体的顶部。只提升声明部分,不会提升赋值部分
<script type="text/javascript">
var scope ="全局变量";
function test() {
document.writeln(scope + "<br>");
var scope = "局部变量";
document.writeln(scope + "<br>");
}
test();
</script>