JavaScript——变量总结

变量

1. 定义变量

隐式定义:直接给变量赋值
显示定义:使用var关键字定义变量。声明变量时可以没有初值,且数据类型是不确定的。

javascript是弱类型语言,可以对同一个变量在不同的时间赋不同的值。
声明变量时无须指定变量的数据类型

var a="显示定义";
a="隐式定义"

2.自动类型转换

程序因为操作运算符的不同,会自动转换成不同的数据类型
自动转换

<script type="text/javascript">
        var a="3.145";//"":字符串类型
        var b=a-2;//字符串不支持减法,自动将字符串转换成数字
        var c=a+2;//加号作为字符串拼接运算符,自动将数值转换成字符串,并将两个字符串进行连接运算
        alert(b+"\n"+c);
</script>

缺点:由于自动转换可读性差,所以有强制类型转换

强制类型转换:

toString():将布尔值、数值等转换成字符串
parselnt():将字符串、布尔值等转换成整数
parseFloat():将字符串、布尔值等转换成浮点数
举例:让"3.145"+2,这样的表达式结果变成5.145

parselnt(),parseFloat()要把其他类型的变量转换成数值型的时候,有两种结果,数值或NaN(not a number)
toString()结果全是object

3.变量作用域——局部变量和全局变量

全局变量:不在函数内定义的变量;不使用var定义的变量(即使被函数包着)
局部变量:在函数里用var定义的变量。只在函数里有效

全局变量可以被所有的脚本访问,且全局变量的作用范围对于执行HTML事件处理一样有效

<script type="text/javascript">
        //定义全局变量test
        var test="全局变量";
        //定义函数
        function myFun()
        {
            //在函数内不使用var定义的age也是全局变量
            age=20;
            //在函数内使用var定义的age是局部变量
            var isMale=true;
        }
        myFun();//调用以下函数才能执行
        alert(test+"\n"+age);
        alert(isMale);
</script>

注意:如果全局变量和局部变量使用相同的变量名,局部变量会覆盖全局变量。

4.变量提升

指的是变量声明总是会被解释器“提升”到函数体的顶部
但是变量提升只提升变量声明的部分,并不会提升变量赋值的部分

<script type="text/javascript">
    //定义全局变量test
    var scope="全局变量";
    function test(){
       document.writeln(scope + "<br >"); 
        //定义scope局部变量,作用范围是指望个函数内
        var scope="局部变量";
        //再次输出scope值
        document.writeln(scope + "<br >");
    }
    test();//
</script>

上述代码第一次输出的scope值是undifined,原因是
(1)下面的scope变量提升到函数体顶部,即 { 的后面
(2)全局变量和局部变量使用相同的变量名,使得局部变量覆盖全局变量,但由于赋值的部分并不会提升,则此时提升的局部变量没有值,是undefined。

变量提升甚至不需要定义变量的语句真正执行,只要在函数中包含了定义变量的语句,该变量的声明就会被提升到函数体的顶部。

5.新增的let变量

用var定义变量可能存在如下问题:

  • var定义的变量没有块作用域;
  • var定义的全局变量会自动添加全局window对象(js中最大的对象)的属性
  • var定义的变量可以变量提升

而let变量与之相反,简单来说,let定义比var定义更加规范

  • let定义的变量有块作用域;
  • let定义的全局变量不会自动添加全局window对象(js中最大的对象)的属性
  • let定义的变量不可以变量提升

6.用const定义常量

只能在定义时指定初始值,声明以后不可修改

const MAX-AGE=120;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值