浅谈JS中的变量及作用域、undefined与null

本文深入探讨JavaScript中作用域的概念、变量的生命周期以及如何在不同作用域内正确使用变量,包括全局作用域、局部作用域和块级作用域的区别,并通过实例展示了变量使用前是否需要var声明的影响。同时,文章还解释了undefined与null的区别,以及在if、==与===运算符使用中的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Situation One

<script>
  var i; //全局变量
  //方法名是camel命名法
  //方法里面的变量是局部变量

  function sayHello(){
  var x=100;
  alert(x);
  x++;
  }
  sayHello(); //输出100
  alert(x); //报错,因为x是局部变量,访问不到
</script>

 

Situation Two


<script>

function sayHello(){

  var x=100;

  if(x==100){
    var y=x+1;
    alert(y); //输出101
  }
  alert(y); //也输出101,在方法内部,不存在块级作用域,在C#中就不可以了!!!

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

}
sayHello();
</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中的判断是判断数值,不考虑类型


转载于:https://www.cnblogs.com/Alpha-Fly/archive/2012/04/05/2432649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值