****作用域(scope): 一个变量的可用范围
1. 全局作用域:在全局作用域中存储的变量,在程序的任何位置都可访问
在全局作用于中创建的变量,都是全局变量
函数名其实一个变量
函数定义其实是一个引用类型的对象
函数还可定义为: 使用*函数直接量*
var 函数名=function(参数列表){xxx}
2. 函数作用域:在函数作用域中存储的变量,只能在本次函数调用时,内部访问。
变量的使用规则: 优先使用局部变量。
如果局部没有,才到全局找
如果全局没有,就报错!
***局部变量: 包括参数变量和在函数内var出的变量
在任何位置给未声明的变量赋值,都会在全局创建该变量
——禁止!
全局污染: 在局部尝试给未声明的变量直接赋值,导致篡改全局的变量值。
强烈建议: 所有变量必须用var声明后,才能使用。
1. 全局作用域:在全局作用域中存储的变量,在程序的任何位置都可访问
在全局作用于中创建的变量,都是全局变量
函数名其实一个变量
函数定义其实是一个引用类型的对象
函数还可定义为: 使用*函数直接量*
var 函数名=function(参数列表){xxx}
2. 函数作用域:在函数作用域中存储的变量,只能在本次函数调用时,内部访问。
变量的使用规则: 优先使用局部变量。
如果局部没有,才到全局找
如果全局没有,就报错!
***局部变量: 包括参数变量和在函数内var出的变量
在任何位置给未声明的变量赋值,都会在全局创建该变量
——禁止!
全局污染: 在局部尝试给未声明的变量直接赋值,导致篡改全局的变量值。
强烈建议: 所有变量必须用var声明后,才能使用。
eg.
<script>
//"use strict";//严格使用
//全局作用域
//var a=10;
function f1(){
var a=20;
m=100;//自动在全局创建m--qiang列不建议使用.必须用var去创建
console.log(a);
}
f1();//20
console.log(a);//10
console.log(m);
function f2(a){
a=20;
}
f2(20);
console.log(a);
</script>