首页 > 代码库 > 7月26号=》276页-285页

7月26号=》276页-285页

13.1.1  运行JavaScript

      前面已经介绍了JavaScript通常嵌在互联网页中执行,在HTML页面中嵌入执行JavaScript代码有两种方式。

        使用javascript:前缀构建执行JavaScript代码的URL。

        使用<script>元素来包含JavaScript代码。

      代码示范:

        //第一种方式

        <a href="javascript:alert(‘运行JavaScript!‘);">运行 JavaScript<a/>

        //第二种方式

        <script type="text/javascript">

          alert("直接运行的JavaScript!");

        </script>

 

13.1.2  导入JavaScript文件

      为了让HTML页面和JavaScript脚本更好的分离,我们可以将JavaScript脚本单独保存在一个*.js文件中。

      代码示范:

        <script src="http://www.mamicode.com/test.js" type="text/javascript"></script>

      上面语法中src属性指定JavaScript脚本文件所在的URL。使用脚本文件分离的方式和直接在该页面上写的脚本效果是一致的。

 

13.2  数据类型和变量

      任何语言都离不开数据类型和变量。下面依次介绍JavaScript中数据类型和变量的基本语法

13.2.1  定义变量的方式

      JavaScript是弱类型脚本语言,使用变量之前,可以无须定义,想使用某个变量时直接使用即可。归纳起来,

      JavaScript支持两种方式来引入变量。

        隐示定义:直接给变量赋值。

        显示定义:使用var关键字定义变量。

      代码示范:

        //隐示方式定义变量a

        a = "Hello JavaScript";

        alert(a);

        //显示方式定义变量a

        var a = "Hello JavaScript";

        alert(a);

      隐示定义的方式简单、快捷、需要使用变量时,直接给变量赋值即可。

      显示声明方式是采用var关键字声明变量,声明时变量可以没有初始值,声明的变量数据类型是不确定的。当第一次给变量

      赋值是,变量的数据类型才确定下来,而且使用过程中变量的数据类型也可随意改变。

 

13.2.2  类型转换

      JavaScript支持自动类型转换,这种类型转换的功能非常强大。

      代码示范:

        //定义字符串变量

        var a = "3.145";

        //让字符串变量和数值执行算术运算

        var b = a-2;

        //让字符串变量和数值执行加法运算

        var c = a+2;

      在上面代码中,a是值为3.145的字符串,让a和数值执行减法,则自动执行算数运算,并将a的类型转换为数值;

      让a和数值执行加法,则a的值转换为字符串。这就是自动类型转换,它的转换规律是:

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

        对于加号运算,因为字符串可用加号作为连接运算符,所以系统自动将数值转换各种类型

 

      各种类型自动类型转换的结果如下表所示:

各种类型自动类型转换的结果
目标类型
字符串类型数值型布尔型对象
undefined"undefined"NaNfalseError
null"null"0falseError
字符串不变数值或NaNtrueString对象
空字符串不变0falseString对象
0"0"0falseNumber对象
NaN"NaN"NaNfalseNumber对象
Infinity"Infinity"InfinitytrueNumber对象
-Infinity"-Infinity"-InfinitytrueNumber对象
数值数值字符串不变trueNumber对象
true"true"1不变Boolean对象
false"false"0不变Boolean对象
对象"toString()返回值"valueOf(),toString()或NaNtrue不变

 

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

      JavaScript提供了如下几个函数来执行强制类型转换。

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

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

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

 

13.2.3  变量

      JavaScript是弱类型语言,同一个变量可以一会儿存储数值,一会儿存储字符串。变量还有个重要的概念:作用范围。

      根据变量定义的范围不同,变量有全局变量和局部变量之分。直接定义的变量时全局变量,全局变量可以被所有的脚本

      访问;在函数里定义的变量称为局部变量,局部变量只在函数内有效。如果全局变量和局部变量使用相同的变量名,则

      局部变量将覆盖全局变量。

      代码示范:

        //定义全局变量test

        var test = "全局变量";

        //定义函数checkScope

        function checkScope()

        {

          //定义局部变量

          var test = "局部变量";

          alert(test);

        }

        checkScope();

      执行结果将会是"局部变量",代码中定义了名为test的全局变量,但在函数中又定义了名为test的局部变量,函数中

      的局部变量覆盖了全局变量。与java、C语言不通的是,JavaScript的变量没有块范围。

      代码示范:

        function test(o)

        {

          if(typeof o == "object")

          {

            //定义变量j,变量j的作用范围是整个函数内,而不是if块内

            var j = 5;

            for(var k = 0; k<10;k++)

            {

              //因为JavaScript没有代码块范围

              //所以k的作用范围是整个函数内,而不是循环体内

              document.write(k);

            }

          }

          //即使出了循环体,k的值依然存在

          alert(k+"\n"+j);

        }

7月26号=》276页-285页