首页 > web前端 > js教程 > 深入理解JS中的变量及作用域、undefined与null_javascript技巧

深入理解JS中的变量及作用域、undefined与null_javascript技巧

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-05-16 16:57:15
原创
1219 人浏览过

Situation One

复制代码 代码如下:

<script><BR>  var i; //全局变量<BR>  //方法名是camel命名法<BR>  //方法里面的变量是局部变量 <P>  function sayHello(){<BR>  var x=100;<BR>  alert(x);<BR>  x++;<BR>  }<BR>  sayHello(); //输出100<BR>  alert(x); //报错,因为x是局部变量,访问不到<BR></script>

Situation Two
复制代码 代码如下:

<script><BR>function sayHello(){<BR>  var x=100;<BR>  if(x==100){<BR>    var y=x+1;<BR>    alert(y); //输出101<BR>  }<BR>  alert(y); //也输出101,在方法内部,不存在块级作用域,在C#中就不可以了!!! <P>  for(var i=0;i<2;i++){<BR>    alert(i)<BR>  } //在for循环里面定义的变量是块级作用域<BR>  alert(i); //因为i是局部变量,所以输出2 <P>}<BR>sayHello();<BR></script>

注:变量使用前可以不用var声明,这样的变量会被认为是“全局变量”,但很少这样用

关于undefined与null

有以下几种情况的,变量的值为undefined
1、变量定义,但没有赋值,则变量的值为undefined
2、调用的方法没有返回值,在返回的值为undefined
3、对象的属性值不存在,则返回值为undefined,如:document.ddd

Example1:

复制代码 代码如下:

var xx;
var yy=null;

if(xx==yy){

  alert('相等');

}

else{

  alert('不等');
}


输出结果为相等,因为在进行if判断时,浏览器会对xx及yy进行值的判断,因为两者都没有具体的值,认为他们都是false。
如果if判断中换成===[全等于符号],则输出不等!因为===表示要求xx及yy的数据类型和值都要相同才可以!

Example2:
复制代码 代码如下:

var xx=10
var yy='10';

if(xx==yy){

  alert('相等');
}

else{

  alert('不等');
}


输出相等,如果换成===,则输出不等

Example3:

复制代码 代码如下:

var n='10';
switch(n){
  case 10:

    alert('数字');
  break;

  case '10':

    alert('字符串');
  break;
}


输出 字符串
switch中的判断要考虑类型

总结:if中的判断是判断数值,不考虑类型

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
javascript - js addClass 无效
来自于 1970-01-01 08:00:00
0
0
0
php调用js并获取js的返回值问题
来自于 1970-01-01 08:00:00
0
0
0
javascript - js代码转python
来自于 1970-01-01 08:00:00
0
0
0
找不到js文件代码
来自于 1970-01-01 08:00:00
0
0
0
js高级教程
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板