Ajax知识分享(2)——JavaScript

        在Ajax应用程序中,JavaScript是核心的编程语言。JavaScript可以嵌在网页中,也可以保存在网页外部的独立文件中。当保存在外部文件中时,网页可以通过文档的head中的<script>标签来引用这些文件:

        <script type="text/javascript" src="/path/file.js"></script>

        JavaScript通常都是按过程书写的,也就是说,JavaScript执行的顺序和你所编写代码的顺序是一致的。

 

        1、语句
        JavaScript指令被称为语句。一组语句便构成了脚本。每条语句应该以分号结尾。如果语句不以分号结尾,而以换行符结尾,JavaScript会自动插入一个分号,把这条语句视为用分号结尾。不过这样会养成松散的编程习惯,所有即使每条语句独占一行,也最好以分号结束语句。

        例如:

        var name = "gerry", age = 18;

        var person = ["gerry", 18];

 

        函数块或者语句块的行末尾就不必添加分号,加了就是多了一句空语句了。

        例如:

        if ( a > 5 ) { a = 5; alert(""); }

        function person() { a = 5; alert(""); }

 

        还有一种情况比较特殊,例如:

        var obj = { "person " : {"name":"gerry", "age":18} };

        var person = function()

        {

                this.name = "gerry";

                this.age = 18;

        };

        这种情况下,虽然行的结尾是函数块或者语句块,但是又由于前面有一个赋值的操作,这个语句块或者函数就构成了一个复杂语句了,一个复杂语句也是一个语句,每个语句的末尾都应该用分号结尾。

 

        2、变量

        在JavaScript中,变量就是值的标签,即使值变了,其标签是不变的。这使得变量非常有助于用于数据的存储、操作和检索。创建变量成为声明,在JavaScript中使用关键字var来声明变量,如:

        var myName;

        变量名可以由字母、数字、下划线和“$”符号组成,但变量名不可以用数字开始。变量名是大小写敏感的。另外,JavaScript的保留字不能用作变量名,如:if、else、for、while、var、function等。

        如果一个变量不使用关键字var来声明,则声明的时候就必须同时赋值。形如:

        myName = "gerry";

        这种变量不管在哪个语句块里面声明,它的作用域都是全局的。它隐性的继承了宿主,在浏览器中就等价于window.myName 。

 

        3、数据类型

        当一个变量第一次被声明后,它的值是null,其中不包含任何数据。变量的值可以是字符串、数值、布尔值或者数组等。这些都被称为数据类型。JavaScript是一种弱类型语言,声明变量时无需定义变量的数据类型,使用过程中也可以随时更改变量的数据类型。

 

        3.1、字符串

        字符的集合便成了字符串。任何字符都可以构成字符串,包括空字符串。在JavaScript中null != "",0 == "",false == ""、null == undefined。字符串必须被放在成对的引号中,引号可以是双引号,也可以是单引号。这样可以方便于我们在字符串中包含引号了,如:

        var s1 = "it's my name", s3 = 'her name is "vivian".';

        当然也可以对字符串中的引号进行转义处理,如:

        var s1 = 'it/'s my name';

        字符串还可以用new运算符来创建,效果和用字符串文字显式创建大致相同,如:

        var s1 = new String("hi");

 

        一个字符串变量创建完后就会自动具有以下属性和方法:

        constructor 属性 | length 属性 | prototype 属性

        anchor 方法 | big 方法 | blink 方法 | bold 方法 | charAt 方法 | charCodeAt 方法 | concat 方法 | fixed 方法 | fontcolor 方法 | fontsize 方法 | fromCharCode 方法 | indexOf 方法 | italics 方法 | lastIndexOf 方法 | link 方法 | match 方法 | replace 方法 | search 方法 | slice 方法 | small 方法 | split 方法 | strike 方法 | sub 方法 | substr 方法 | substring 方法 | sup 方法 | toLowerCase 方法 | toUpperCase 方法 | toString 方法 | valueOf 方法

 

        3.2、数值

        如果你想要一个数值变量,赋值时不要用引号或其他符号把数字包含起来,直接把数值赋给变量即可。数值不一定非得大于零,也没有限制必须是整数。如:

        var num = -100.01;

        字符串还可以用new运算符来创建,效果和用数值赋值方式创建基本一样,不同的地方是,这种方式会自动把字符串转化为数值,如:

        var num = new Number("100"); 或者 var num = new Number(100);

        当我们运行alert("100" == 100)的时候,会发现返回的结果是true。但千万不要以为字符串的"100"和数值的100就是完全相等了。这是JavaScript的灵活性带来的一个不严谨的小问题,因为JavaScript在进行比较运算时会尝试将数值转成字符串然后再比较。当数值和字符串混合操作时(尤其是相加时),我们如果不小心数据类型往往会在这里留下bug。例如:

        var num1 = "100", num2 = 100;

        var result1 = num1  + num2 ;  //  运行结果是"100100"

        var result2 = num1  - num2 ;  //  运行结果是0

        alert (num1.length); //  运行结果是2

        alert (num2.length); //  运行结果是undefined

        所以我们在进行字符和数值混合运算时,要养成先显式转化数据类型在运算的习惯。转化方式如:

        num2.toString();  //数值型转换成字符串型

        parseInt(num1);  //返回由字符串转换得到的整数

        parseFloat(num1); //返回由字符串转换得到的浮点数

        我们可以使用isNaN()方法来测试一个字符串能不能转换成数值,如果isNaN(string)返回true则不能转换;返回false则可以。

 

        3.3、布尔值

        对于一个布尔变量来说,它的取值只有两种可能,不是真(true)就是假(false)。布尔变量声明如下:

        var boolObj = false;

        布尔值不需要包含在引号内,例如用引号把false括住,它就会变成字符串,而非空的字符串就是真,这样以下语句就会弹出警告框。

        if ("false") { alert ("haha") ;}

        在JavaScript中,除了null、false、空字符串""、0、NaN、undefined是假以外,其他都是真的。所以当一个布尔变量声明后但却没有被赋值,则它的值是null,也就是假。

        布尔变量也可以用new运算符来创建,这样就可以将字符串"true"转换成true了。如

        var boolObj = new Boolean("true"); // 结果返回true

 

        3.4、数组

        以上几种数据类型都只能存储单值,数组可以在一个变量中存储多个值,数组中的每个值它叫做成员。数组的声明可以用new关键字,也可以用一个中括号。当数组有多个成员时,成员之间用逗号分隔,数组的成员可以是任意数据类型混合的。如:

        var arr = new Array("gerry", 18);

        var arr = ["gerry", 18];

        当把数组的声明和赋值写在一起时,每个成员就自动赋予一个索引。一个索引就是一个自然数,用于标明成员在数组中的位置。如果声明数组后再赋值,就需要为每个成员明确提供索引。如:

        var fruit = [];

        fruit[0] = "apple";

        fruit[1] = "orange";

        fruit[5] = "banana";

        fruit[-1] = "lemon";

        JavaScript的数组的索引是自然数,也就是说索引是从0开始的。那上面我们给fruit[-1]赋值会造成什么结果呢?经过运行,程序没有报错,而且alert(fruit[-1] )也能正确返回值,但是alert(fruit.length)却返回6,说明fruit[-1] 已经被剔除出fruit数组了。

        JavaScript的数组还可以使用字符串作为数组的索引,这种数据叫做关联数组,或者称为散列。如:

        var fruit = [];

        fruit["apple"] = "apple1";

        fruit["orange"] = "orange1";

        fruit["banana"] = "banana1";

        我们运行alert(fruit["apple“] )也能正确返回"apple1",但是alert(fruit.length)却返回0,所以这种数组其实已经不能算是数组了。当然也不能使用数组变量的通用属性和方法:

        constructor 属性 | length 属性 | prototype 属性

        concat 方法 | join 方法 | pop 方法 | push 方法 | reverse 方法 | shift 方法 | slice 方法 | sort 方法 | splice 方法 | toLocaleString 方法 | toString 方法 | unshift 方法 | valueOf 方法

 

        4、运算符

        4.1、算术

        JavaScript的算术运算符包括加“+”、减“-”、乘“*”、除“/”、求余“%”、自增“++”、自减“--”。其中“+”比较特殊,它还有一个特别的功能是可以拼接字符串,当字符串和数字相加时,数字会自动转化成字符串再进行拼接。如:

        var s = 100 + 9 + "s" + 2; // 结果返回109s2

 

        4.2、比较

        JavaScript的比较运算符包括大于“>”、小于“<”、等于“==”、不等于“!=”、大于等于“>=”、小于等于“<=”、恒等于“===”、不恒等于“!==”。其中等于“==”和恒等于“===”的区别是是否绝对相等。他们的区别主要用来解决JavaScript灵活的自动转换性带来的不严谨。比如:

        alert("100" == 100); // 返回ture

        alert("100" === 100); // 返回false

        alert("" == 0); // 返回ture

        alert("" === 0); // 返回false

 

        4.3、逻辑

        JavaScript的逻辑运算符包括取反“!”、逻辑或“||”、逻辑与“&&”。如:

        alert(1 - 1 || !(2 > 1)); // 返回false。

 

        4.4、三元

        JavaScript也有三元运算符,如:( a > b ) ? "result1" : "result2" 。其中如果a>b返回true则整个表达式返回result1,如果a>b返回false则整个表达式返回result2。

 

        4.5、if

        if 语句是最常见的控制结构之一。其如:

        if ( a > b ) { /* do something */ }

        其中关键字if后的圆括号里就是比较操作,只有比较的结果为true,才会执行大括号里的操作。

        if 语句还可以使用else进行扩展,使得比较的结果为false时,可以执行else后面大括号里的操作。如:

        if ( a > b ) { /* do something */ }

        else{ /* do something */ }

 

        5、循环

        if 语句是条件控制结构的一种。另一种控制结构用于反复执行同段代码,这种结构叫做循环。

        5.1、while

        while语句看起来有点像if。它们的不同之处在于只要条件判断为true,大括号里的语句就会反复执行。如:

        while ( a > b ) { /* do something */ }

 

        5.2、do...while

        控制结构do...while与while很像。不同之处为do...while大括号中的语句至少会被执行一次。如:

        do { /* do something */ } while ( a > b ) ;

 

        5.3、for

        在for循环控制结构中,圆括号里包含3条语句:初始化语句、条件测试语句和变更语句,它们彼此用分号分隔。其中每条语句又可以有多条小语句组成,其用逗号分隔。如:

        for (var i = 0, j= 10; i<4 || j > 8 || i - j > 2; i ++, j-=2) { /* do something */ }

 

        5.4、for...each

        for...each循环控制结构主要用于一个对象的每个,或一个数组的每个元素,执行一个或多个语句。 如:

        var a = [1,2,3,4,5,"s"],s = "", key;
        for (key in a){s += a[key];}
        alert(s); // 结果返回12345s

 

        6、函数

        

 

        7、对象

        7.1、内置对象

        7.2、用户自定义对象

        7.3、宿主对象

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值