视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
深入理解JS中的变量及作用域、undefined与null_javascript技巧
2020-11-27 21:20:27 责编:小采
文档


Situation One
代码如下:
输出100
  alert(x); //报错,因为x是局部变量,访问不到


Situation Two
代码如下:
输出101
  }
  alert(y); //也输出101,在方法内部,不存在块级作用域,在C#中就不可以了!!!

  for(var i=0;i<2;i++){
    alert(i)
  } //在for循环里面定义的变量是块级作用域
  alert(i); //因为i是局部变量,所以输出2

}
sayHello();


注:变量使用前可以不用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中的判断是判断数值,不考虑类型

下载本文
显示全文
专题