JS数据类型和变量

一、定义变量的方式
1、隐式定义:

 <script type="text/javascript">
 a = "Hello JavaScript";
 alert(a);
 </script>

2、显式定义:

<script type="text/javascript">
 var a;
 a = "true";
 alert(a);
 </script>

二、类型转换
1、对于减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转成数值。
2、对于加号运算符,系统直接将数值转为字符串,就成了两个字符串进行连接运算。

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var a = "3.145";
        var b = a - 2;
        var c = a + 2;
        alert (b + "\n" + c);
    </script>
</body>
</html>

结果:
在这里插入图片描述
三种强制类型转换:
1、toString():将布尔值、数值等转换成字符串。
2、parselnt():将字符串、布尔值等转换成整数。
3、parseFloat():将字符串、布尔值等转换成浮点数。

当使用parseInt()或parseFloat()将各种类型的变量转换成数值类型时:如果字符串是一个数值字符串,就可以转换,否则会转换为NaN;underfined、null、布尔值及其其他对象,都会转换成NaN。

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var a = "3.145";
        var b = a - 2;
        var c = parseFloat(a) + 2;
        alert (b + "\n" + c);
    </script>
</body>
</html>

结果:
在这里插入图片描述
三、变量作用域
变量有全局变量和局部变量之分;
全局变量:不在函数内里定义的变量(不管是否使用var定义)和在函数里不使用var定义的变量都是全局变量,谁都可以访问。
局部变量:在函数内被var定义的变量为局部变量,只在该函数内有效。

(注:代码的执行过程中,如果函数外的全局变量名与函数内的局部变量名一样的话,局部变量会覆盖全局变量 ,会先输出局部变量。)

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    
</head>
<body>
    
    <script type="text/javascript">
        var test="全局变量";
        function a(){
            age =20;
            var isMale = true;
        }
        a();
        alert(test + "\n" + age);
        alert(isMale);
    </script>
</body>
</html>

结果:
在这里插入图片描述
与Java、C等语言不同的是,JavaScript的变量没有块范围,只要在同一个函数内,无论函数内有几个花括号,变量无论在花括号的内或外,都能找到该变量。

定义变量使用var和不使用var的区别:
1、如果使用了var定义一个变量,那么这个变量就会是一个新的变量,无论变量名是否与之前的变量名重名,他都是一个新的变量。
2、如果使用var定义变量,那么该变量总是会被系统当做全局变量。

四、变量提升
在函数内部,如果声明变量的语句在输出语句的下面,那么就会提升变量,就是提前的声明变量,将该变量的声明提升到函数的顶部;(变量提升只是会提升变量声明部分,并不会提升变量赋值部分)

(变量提升甚至不需要定义变量的语句执行,就是说只要在函数内部有被声明的局部变量,该变量就会被提升到函数的顶部;如果还与函数外部的全局变量名一样,局部变量就会覆盖全局变量,就不会出现在函数内部输出全局变量。)

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var scope = "全局变量";
        function test(){
            document.writeln(scope + "<br >");
            var scope = "局部变量";
            document.writeln(scope + "<br >");
        }
        test();
    </script>
</body>
</html>

结果:
在这里插入图片描述
五、新增的let变量

let为了解决var的一些问题而出现:
1、var定义的变量没有作用域,而let有明确的作用域。
2、var定义的全局变量会自动的添加全局window对象的属性,而let不会添加。
3、var定义的变量会提前装载,let没有变量提升
(let比var更加的严谨)

六、使用const定义常量
const的用法:

const A = 120;//正确,通常常量用大写的字母表示
A = 200;//错误
A++;//错误,常量不能更改
const A;//错误,没有初始化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值