JavaScript语法详解(二)__ 数据类型和变量

一.定义变量的方式

JavaScript是弱类型脚本语言,使用变量之前,可以无须定义,直接用即可。

1)隐式定义:直接给变量赋值

<script type="text/javascript">
//隐式定义变量 a
a="Hello World"
//使用警告语句输出a的值
alert(a);
</script>

2)显实定义:使用var关键字定义变量。声明时变量可以没有初始值,声明的变量数据类型是不确定的。当第一次给变量赋值时,变量数据类型才 确定下来,而且使用过程中变量的数据类型也可以随意改变。

<script type="text/javascript">
//显示定义变量a
var a;
//给变量a赋值,赋值后a的数据类型为布尔型
a=true;
//使用警告语句输出a的值
alert(a);
</script>

注意:JavaScript中的变量区分大小写。

JavaScript允许一次声明多个变量,可以在定义变量时为变量指定初始值

//定义变量i,j,k,其中j,k指定初始值
var i,j=0,k=0;

二.类型转换

JavaScript支持自动类型转换,这种类型转换

   <script type="text/javascript">
       //定义字符串变量
       var a = "3.145";
       //让字符串变量和数值执行算术运算
       var b = a - 2;
       //让字符串变量和数值执行加法运算
       var c = a + 2;
       //输出b和c的值
       alert(b + "\n" + c);
</script>


对于减法运算符,因为字符串不支持减法运算,所以系统自动将字符串转换为数值。

对于加法运算符,因为字符串可用加法符号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串连接。

这种自动类型转换虽然方便,但是程序的可读性非常差,而且有时候我们希望让字符串和数值执行加法运算,这就需要使用强类型转换了。

1)toString() :将布尔、数值等转换成在字符串

2)parseInt() :将字符串、布尔等转换成整数

3)parseFloat() :将字符串、布尔等转换成浮点数

 <script type="text/javascript">
       //定义字符串变量
       var a = "3.145";
       //让字符串变量和数值执行算术运算
       var b = a - 2;
       //让字符串变量和数值执行加法运算
       var c = parseFloat(a) + 2;
       //输出b和c的值
       alert(b + "\n" + c);
</script>


当使用parseInt()或parseFloat()将各种类型转换成数值类型时:

字符串值是一个数值字符串的可以直接转换成数值,否则将转换成NaN

undefined,null,布尔,及其他对象,一律转换成NaN

<script type="text/javascript">
       //定义数值变量
       var a = 3.145;
       //数值变量强转换成字符串,并与数值做加法运算
       var b = toString(a) + 2;
       //输出b的值
       alert(b);
</script>

注意:当使用ToString()函数将各种类型的值像字符按串转换时,结果全部是object。

三. 变量

根据变量定义的范围不同,变量有全局变量和局部变量之分。函数外部定义的都是全局变量,函数内部通过var定义的为局部变量,隐式定义的为全局变量(这种全局变量需要函数被运行一次才能被定义)。如果局部变量与全局变量使用相同的变量名,则局部变量将覆盖全局变量。

<script type="text/javascript">
    //定义全局变量test
    var test = "全局变量";
    //定义函数 checkScope
    function checkScope() {
        //定义局部变量
        var test = "局部变量";
        //输出局部变量
        alert(test);
    }
    checkScope();

</script>

注意:与Java、c等语言不同,javaScript的变量没有块范围

<script type="text/javascript">
function test(o) {
        //定义变量i,变量i的作用范围是整个函数
        var i = 0;
        if (typeof o == "object") {
            //定义变量j,变量j的作用范围是整个函数内,而不是if块内
            var j = 5;
            for (var k = 0; k < 10; k++) {
                //因为javascript没有代码块范围
                //所以k的作用范围是整个函数内,而不是循环内
                document.write(k)
            }
        }
        alert(k + "\n" + j);

    }
    test(document);
</script>

<script type="text/javascript">
    //定义全局变量
    var scope = "全局变量";
    function test() {
        //全局变量被局部变量覆盖
        //而此时scope局部变量尚未赋值,故此处输出undifined
        document.write(scope);
        //定义局部变量,其作用域为整个函数
        var scope = "局部变量";
        //再次输出scope
        document.write(scope);
       
    }
    test();
</script>

输出:


注意:定义变量用var和不用var的区别

如果使用var定义变量,那么程序会强制定义一个新变量

如果没使用var定义变量,那么系统会优先在当前上下文中搜索是否存在该变量,只有在改变量不存在的情况下,系统才会重新定义一个新变量。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值