(四)javascript中变量的声明及获取变量类型的方法

一般用 var 或者 let 声明的变量,都是弱类型,即所声明的变量的类型取决于接受值的类型

var 与 let 声明变量时的区别:

var 能够在当前作用域下重复声明,但是之前的值就会丢失;
let 声明的变量在当前的作用域下不能重复声明
且两者解析机制不一样,预解析时 var 声明的变量会进行变量提升,而 let 声明的变量在预解析时不进行变量提升
let 声明变量有四大主要特性存在块级作用域没有变量提升暂时性死区不允许重复声明
块级作用域:所谓块,就是在 {} 内部的代码区域,代码块内部与外部不会有命名冲突,然后代码块内部声明的 let 变量也只能在代码块块内使用,代码块外部访问不到。
变量提升:就是先将变量的声明提升到当前作用域的最前面,然后在按照顺序执行代码; let 声明的变量没有变量提升,所以也就不会提前 let 变量的声明。
暂时性死区:在代码块内,使用let和const命令声明变量之前,该变量都是不可用的,语法上被称为暂时性死区。(可见也是因为 let 和 const 变量没有变量提升的机制所导致的)。
不允许重复声明:也就是字面意思啦,就是在一个代码块内只允许声明一次,重复声明会报错。但 let 声明的变量可以重复赋值;而 const 声明的为常量,在一个代码块内只能声明一次且只能赋值一次。
验证 var 和 let 声明变量的特性的 代码示例如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试 var 和 let 的区别</title>
</head>
<body>
    <script>
        // var 具有变量提升
        console.log('可以提前访问 a :'+a);     // a 的结果是:undefined (因为将变量声明提前了,赋值还在原来的代码位置)
        // var 可以 重复声明 和 赋值
        var a = 10;
        var a = 20;
        console.log('a 的值为:'+a);     // a 的结果是:20 (可见会以当前作用域下的最后一次赋值为准)
        // let 不存在变量提升
        //console.log('不可以提前访问 b :'+b);   // 这里会报错:因为let没有变量提升,所以访问b的是未声明的变量,所以就报错了。
        // let 可以重复 赋值,并存在块级作用域
        let b = 10;
        {
            let b = 30;     // 如果将本行注释掉,下一行将输出 b 的结果为 10;因为会一级一级往外寻找是否有变量 b
            console.log('块内输出 b 的值为:'+b);     // b 的结果为:30   (没有 {} 包裹第二次声明就会报错,因为let不允许重复声明且存在块级作用域)
        }
        console.log('代码块外输出 b 的值为'+b);     // 这里输出 b 的值为:10;可见代码块外访问不到代码块内的值
    </script>
</body>
</html>

获取变量类型的方法:

alert( typeof num)即可直接弹出变量 num 的类型。
typeof num 返回的就是变量 num 的类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冉冉编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值