Javascript 变量作用域、switch语句、while语句、for语句
一、变量作用域
变量作用域分别是:全局变量和局部变量;
全局变量是声明在script标签下的变量
局部变量是声明在方法体中的变量。
全局变量故名思意,就是从自己声明的地方向下的代码都可以访问和使用的变量。
局部变量由于是声明在方法体中的,所以他的作用域只局限于方法体内部使用。
<script>
//定义一个全局变量
var public;//此时public这个变量就能够被他下面的所有代码块所使用,直到程序结束
fun1();//调用方法一
fun2();//调用方法二
//声明一个方法
function fun1(){
//声明一个局部变量并赋值
var static = "Starqin920";//此时static这个变量的作用域就是从这个定义的地方开始,到fun1方法的结束花括号
//方法内部使用全局变量,例如给全局变量赋值
public = 5201314;//此时public的值在整个作用域中都将变为5201314;
}
//再定义一个方法
function fun2(){
//在这个方法分别输出public和static
console.log(public);//输出结果5201314
console.log(static);//输出结果报错 static is not defined(原因是static是在方法一中声明的,作用域到方法一结尾花括号处结束,其余的代码块访问不到)
}
</script>
值得注意的是,严格意义上讲全局变量是不可重复定义的,但是js中却允许重复定义,重复定义后的全局变量其作用域是从第一次定义的地方开始,到第二次定义的地方结束,第二次定义的地方开始,到第三次定义的地方结束,第三次定义......
很显然如果一个程序中有这样的变量存在,会使得开发人员无法准确的判断变量值,所以在写全局变量时,不要重复定义。
//一定要搞清楚定义变量和使用变量的区别
//定义变量 变量前有var
//使用变量 变量前没有var
全局变量不能重复定义,但是局部变量可以在不同的方法(函数)中重复定义的。
变量var的问题
在js中定义变量时 var 其实是可以写,也可以不写的。
写与不写var的区别
- 书写
var后 在script标签下声明的变量就是全局变量,在方法(函数)中声明的变量就是局部变量 - 没有书写
var时,如果在它前面没有声明过同名变量,那么无论声明在哪,都是全局变量。如果在此之前有声明同名的变量,那么此时就是调用变量的意思,此前是什么类型的变量就是什么类型的变量
二、switch语句
switch语句和if语句一样都是条件判断语句,属于分支语句,其语法是:
switch(变量){
case '匹配值':
匹配值相同时执行的代码
break;//结束,跳出
case '匹配值':
匹配值相同时执行的代码
break;//结束,跳出
default:
其他时候执行的代码
break;
}
//如果case块与case块之间没有break,那么case都会被执行,这就是所谓的穿透
三、循环语句
当什么循环
while循环语法
while(条件){
条件满足时执行的代码
}
//如果while括号中的条件为真就会执行,这也造成了这个函数的一个天生bug,例如如果里面的值时true或者1时,程序就会进入死循环
//为了避免出现这样的状况,一般都要添加结束循环的条件例如下面的程序
var i = 15;
while(i>10){
console.log('执行了')
i--;
}
当i大于10时,执行循环
直到什么循环
for循环语法
for(var 变量初始值;结束条件;循环变量){
循环体(循环执行的代码)
}
for(var i=0;i>10;i++){
console.log('执行了')
}
直到i大于10循环就会结束
每日一记,如有错误,欢迎指出