标签:原来 输出 == alert 问题 script 而不是 代码 for
变量的作用域指的是,变量起作用的范围。也就是能访问到变量的有效范围。
JavaScript的变量依据作用域的范围可以分为:
==定义在函数外部的变量都是全局变量。==
全局变量的作用域是==当前文档==,也就是当前文档所有的JavaScript脚本都可以访问到这个变量
<script type="text/javascript">
alert(a);
var a = 20;
</script>
运行这段代码并不会报错, alert(a); 这行代码弹出:undefined
这是因为声明提前!
> 所以上面的代码等效下面的代码:
<script type="text/javascript">
var a; //声明提前
alert(a);
a = 20; //赋值仍然在原来的位置
</script>
局部变量的作用域是局部变量所在的整个函数的内部。 在函数的外部不能访问局部变量。
<script type="text/javascript">
function f(){
alert(v); // 弹出:undefined
var v = "abc"; // 声明局部变量。局部变量也会声明提前到函数的最顶端。
alert(v); // 弹出:abc
}
alert(v); //报错。因为变量v没有定义。 方法 f 的外部是不能访问方法内部的局部变量 v 的。
</script>
<script type="text/javascript">
var m = 10;
function f(){
var m = 20;
alert("方法内部:" + m); //代码1
}
f();
alert("方法外部:" + m); //代码2
</script>
代码1输出什么? undefined还是10?还是报错?
==输出10!==
在上面的代码中,变量 n 虽然是在 if 语句内声明的,但是它仍然是全局变量,而不是局部变量。只有定义在方法内部的变量才是局部变量
注意:
标签:原来 输出 == alert 问题 script 而不是 代码 for
原文地址:https://www.cnblogs.com/Graham/p/9050254.html