1、Javascript变量作用域
javascript中,变量主要分为局部变量和全局变量两种,对应的作用域也是局部作用域和全局作用域。
1 局部变量和作用域
局部变量一般在函数体内部声明使用:
function func(){ var i=12;//局部变量 ......}
局部变量的作用域在声明这个变量的函数体范围内使用。
局部变量的声明周期从函数被调用执行开始初始化,在函数调用执行完毕之后被销毁。
2、全局变量和作用域
全局变量一般在函数体外面声明:
var i=12;//全局变量function func(){ ......}
还有一种没有声明而直接使用的变量,默认为全局变量:
function func(){ i=12;//没有被声明(使用var 关键字声明),默认为全局变量}
全局变量在当前页面中所有的脚本和方法中都可以使用,作用域为当前页面脚本中。
全局变量的声明周期在变量被初始化时被创建,在当前页面关闭的时候被销毁。
2、typeof关键字
typeof关键字主要用来检测变量的数据类型,JavaScript中主要的数据类型有string、number、Boolean、object等
console.log(typeof 'str');//stringconsole.log(typeof 23);//numberconsole.log(typeof false);//booleanconsole.log(typeof [1,3,12]);//objectconsole.log(typeof {name:'jack',age:12});//objectconsole.log(typeof new Date());//object
注意: js中的数组、json对象都是object数据类型的
3、null和undefined
null和undefined在JavaScript中经常出现,表示一个变量的值为空或者是一个变量未被定义。在表示值的时候,都可以表示为空值,但是在数据类型方面还是不一样。
console.log(typeof null);//objectvar persion = null;console.log(persion);//nullconsole.log(typeof undefined);//undefinedvar persion2;console.log(persion2);//undefined
null的数据类型为object,undefined的数据类型就是undefined。
变量声明,值为null,变量值为null;变量只声明,没有赋值,值为undefined。
再看一组对比:
console.log(null==undefined);//true 值相等console.log(null===undefined);//false 类型不相等
这就可以看出来,null和undefined的表示值的时候,都表示空;null的数据类型为object,undefined的数据类型就是undefined。只声明而没有初始化的值都是undefined。
下面是补充
Situation One
<script> var i; //全局变量 //方法名是camel命名法 //方法里面的变量是局部变量 function sayHello(){ var x=100; alert(x); x++; } sayHello(); //输出100 alert(x); //报错,因为x是局部变量,访问不到</script>
新闻热点
疑难解答
图片精选