2.2语法
变量名的规范
数据类型的强弱类型
数组[混合,变量,数组]
关联数组 不应该修改array对象的属性
对象 bealtes[0].name var bealtes ={}; beatles.vocalist = lennon; bealtes.vocalist.name
操作
函数
对象 |
2.1准备工作 最好的做法是把<script>标签放在HTML文档最后,</body>标签之前: <body><script src="file.js"></script></body>
程序设计语言分为解释型和编译型,Java或C++语言需要一个编译器。编译器是一种程序,能够把用Java等高级语言编写出来的源代码翻译为直接在计算机上执行的文件。 解释型程序设计语言不需要编译器--它们仅需要解释器。对于JS语言,在互联网环境下,Web浏览器负责完成有关的解释和执行工作。浏览器中的JS解释器将直接读入源代码并执行。浏览器中如果没有解释器,JS代码就无法执行。 用编译型语言编写的代码有错误,这些错误在代码编译阶段就能被发现。 而解释性语言代码中的错误只能等到解释器执行到有关代码时才能被发现。 与解释型语言相比,编译型语言往往速度更快,可移植性更好,但它们的学习曲线往往更陡峭。 2.2语法 英语是一种解释型语言。在阅读和处理我们用英语写出来的文字时,你就相当于一个英语解释器。只要遵守英语的语法规则,我们想表达的意思就可以被正确地解读。这些语言结构方面的各项规则,我们称之为“语法”。 2.2.1语句 用JS编写的脚本,与其他语言编写出来的脚本一样,都由一系列指令构成,这些指令叫做语句。只有按照正确的语法编写出来的语句才能得到正确的解释。 JS语句与英语中的句子很相似。它们是构成任何一个脚本的基本单位。 英语语法要求每个句子必须以一个大写字母开头、以一个句号结尾。JS在这方面的要求不严格,只需简单地把各条语句放在不同的行上就可以分隔它们,如下: first statement second statement 如果你想把多条语句放在同一行上,就必须像下面这样用分号来分隔开它们: first statement; second statement; 我们建议在每条语句的末尾都加上一个分号,这是良好习惯:这样做让代码更容易阅读。让每条语句独占一行的做法更容易跟踪JS脚本的执行顺序。 2.2.2 注释 // /**/ 2.2.3变量 JS可以这样给变量赋值: mood = “happy”; age = 33; 这些语句可以把这两个变量的值显示在一个弹出式警告窗口中: alert(mood); alert(age); 对变量进行声明时良好的编程习惯 var mood; var age; 可以一条语句一次声明多个变量; var mood, age; 还可以声明和赋值一次完成 var mood = "happy"; var age = 33; JS是区分大小写的。 JS语法不允许变量名中包含 空格 标点符号(美元符号$例外) 这条语句错误的 var my mood = "happy"; JS变量允许包含字母、数字、美元符号和下划线(但第一个字符不允许是数字)。 较长的变量名可以这样 var = my_mood = "happy"; 驼峰格式,删除中间的空白(下划线),后面的每个新单词用大写字母开头 var myMood = "happy"; 驼峰格式是函数名、方法名和对象属性名 命名的首选格式。
2.2.4数据类型 变量mood的值是字符串,age是一个数,虽然是不同类型的数据,但在JS中两个变量进行声明和赋值语法是一样的,其他语言声明变量同时还必须声明变量数据类型,称为类型声明。 必须明确类型声明语言是强类型语言。JS不需要进行类型声明因为是弱类型语言,意味着程序员可以在任何阶段改变变量的数据类型 以下语句在强类型语法是非法的,在JS却没问题: var age ="thirty three"; age = 33; 1、字符串 var heright = "about 5'10\" tall"; 双引号包裹的单引号可以显示 遇到双引号需要反斜线进行转义
2数值 可以整数 可以 浮点数。
3.布尔值 布尔数据只有两个可选 项 true或false。假设需要一个变量:如果我正在睡觉,这个变量将存储一个值;如果我没有睡觉,这个变量将存储另一个值。可以用字符串数据类型把变量赋值为“sleeping”或“not sleeping”,但使用布尔数据类型是更好的选择: var sleeping = true;
2.2.5数组 字符串、数值和布尔值都是标量。如果某个变量是标量,它在任意时刻就只能有一个值。如果想用一个变量来存储一组值,就需要使用数组。 数组可以用关键字Array声明。声明数组的同时还可以指定数组初始元素个数,也就是这个数组的长度: var beatles = Array(4); 我们完全可以在声明数组时不给出元素个数: var beatles = Array(); 数组中添加元素的操作称为填充。在填充数组时,不仅需要给出新元素的值,还需要给出新元素存放位置,位置就是下标,下标用方括号括起来 array[index] = element; 填充刚才声明的beatles数组 beatles[0] = "John"; 声明填充beatles数组全过程 var beatles = Array(4); bealtes[0] = "John"; bealtes[1] = "paul"; bealtes[2] = "George"; bealtes[3] = "Ringo"; 还可以 var beatles = Array("John", "Paul", "George", "Ringo"); 甚至用不着明确地表明我们是在创建数组。事实上,只需用一对方括号把各个元素的初始值括起来就可以了: var beatles = ["John", "Paul", "George", "Ringo"]; 数组元素不是非得字符串,还可以布尔值,还可以一组数值,甚至3种数据类型混在一起 var lennon = ["John", 1940, false]; 数组元素还可以是变量: var name = "John"; beatles[0] = name; 这将把beatles数组的第一个元素赋值为"John" 数组元素的值还可以是另一个数组的元素。下面两条语句将把beatles数组的第二个元素赋值为"Paul" var names = ["Ringo", "John", "George", "Paul"]; beatles[1] = names[3]; 事实上,数组还可以包含其他数组 var lennon = ["John", 1940, false]; var beatles = []; beatles[0] = lennon; // beatles[0][0] 的值是 John 关联数组 var lennon = Array(); lennon["name"] = "John"; lennon["year"] = "1940"; lennon["living"] = false; 这样的数组叫做关联数组。 由于可以使用字符串代替数字,因此更具可读性。本质上创建关联数组时,创建的是Array对象的属性,在JS中,所有变量都是某种类型的对象。比如一个数组就是一个Array类型的对象。上面例子中 实际上是给lennon数组添加了 name、year 和living三个属性,理想情况下,不应该修改Array对象的属性,应该使用通用的对象。
2.2.6对象 与数组类似,对象也是使用一个名字表示一组值。对象的每个值都是对象的一个属性。 var lennon = Object(); lennon.name = "John"; lennon.year = 1940; lennon.living = false; 创建对象还有一种更简洁的语法,即花括号语法: {propertyName: value, propertyName: value} lenoon对象也可以写成下面这样: var lennon = {name : "John", year:1940, living:false}; 下面将创建一个新的beatles数组,并用刚才创建的lennon对象来填充它的第一个元素。 var beatles = Array(); beatles[0] = lennon; 现在,不需要使用那么多数就可以获得想要的元素。我们不能使用beatles[0][0]而是使用bealtes[0].name得到值"John"。 还可以进一步垓心, 把beatles数组也声明为对象而不是传统数组 var beatles = {}; beatles.vocalist = lennon; 现在 beatles.vocalist.name 的值是"John", beatles.vocalist.year的值是1940 , beatles.vocalist.living的值是false。
2.3操作 算术操作符 = + - * / 可以对变量进行操作 var temp_fahrenheit = 95; var temp_celsius = (temp_fahrenheit - 32) / 1.8; 加号是一个比较特殊的操作符,既可以用于数值,也可以字符串 var message = "I am feeling" + "happy"; 这样多个字符串连在一起叫做拼接 也可以通过变量来完成。 var mood = "happy"; var message = "I am feeling" + mood; 也可以数值和字符串拼接在一起,数值自动转换为字符串: var year = 2005; var message = "The year is " + year; 字符串和数值拼接 数值会变成字符串 alert("10" + 20); // 1020 alert(10 + 20) // 30 还能+= var year = 2010; var message = "The year is"; message += year; alert(message); //The year is 2010
2.4条件语句 if 语句的基本语法: if(condition){statements;} 2.4.1比较操作符 > 、 <、 >= 、 <= 、 == 、!= 、=== == 并不代表严格相等 var a = false; var b = ""; if(a == b){alert("a equals b");} 这条语句为true var a = false; var b = ""; if(a === b){alert("a equals b");} 这次就是false了 因为即使可以认为false与空字符串具有相同的含义,但Boolean和String可不是一种类型。 2.4.2逻辑操作符 && 满足两个条件 , || 两个false 才为false 、!非 if ( !(1>2)){alert("All is well with the world");} 2.5循环语句 if while var count = 1; while(count < 11){alert(count); count++;} do..while 我们希望那些包含在循环语句内部的代码至少执行一次。这时,do循环时我们的最佳选择,下面是do循环的语法: do{statements;} while (condition); do..while至少执行一次 2.5.2for循环 for循环最常见的用途之一就是对某个数组里的全体元素进行遍历处理,往往需要用到array.length属性 var beatles = Array("John", "Paul", "George", "Ringo"); for(var count = 0; count < beatles.length; count++){alert(beatles[count]);}
2.6函数 如果需要多次使用同一段代码,可以把它们封装成一个函数。函数就是一组允许在你的代码里随时调用的语句。每个函数实际上是一个短小的脚本。 作为一种良好的编程习惯,应该先对函数做出定义再调用它们。 function shout(){ var beatles = Array("John", "Paul", "George", "Ringo"); for(var count = 0; count < beatles.length; count++){ alert(beatles[count]); } } 这个函数里的循环语句将以此弹出对话框来显示Beatles乐队成员的名字。现在,如果想在自己的脚本里执行这一动作,可以随时使用语句来调用函数 shout(); 每当需要反复做一件事时,都可以利用函数来避免重复键入大量的相同内容。不过,函数的真正威力体现在,你可以把不同的数据传递给它们,而它们将使用这些数据去完成预定的操作。我们把传递给函数的数据成为参数 定义一个函数的语法: function name(arguments){ statements;} JS提供了许多内建函数,alert就是一例。这个函数需要我们提供一个参数,它将弹出一个对话框来显示这个参数的值。 在定义函数时,你可以为它声明任意多个参数,只要用逗号把它们分隔开来就行。在函数的内部,你可以像使用普通变量那样使用它的任何一个参数 下面是一个需要传递两个参数的函数。如果把两个数值传递给这个函数,这个函数将对它们进行乘法运算: function multiply(num1, num2){ var total = num1 * num2; alert(total); } 定义了这个函数的脚本里,我们可以从任意位置去调用这个函数 multiply(10,2); 把数值10和2传递给multiply()函数的结果 弹出对话框显示20; 如果这个函数能把结果返回给调用这个函数的语句往往会更有用。函数不仅能够(以参数的形式)接受数据,还能够返回数据。 我们完全可以创建一个函数并让它返回一个数值、一个字符串、一个数组或一个布尔值。这需要用到return语句: function multiply(num1, num2){ var total = num1 * num2; return total; } 下面这个函数只有一个参数(一个华氏温度值),它将返回一个数值(同一温度的摄氏温度值): function convertToCelsius(temp){ var result = temp - 32; result = result / 1.8; return result; } 函数的真正价值体现在,我们还可以把它们当做一种数据类型来使用,这意味着可以把一个函数的调用结果赋给一个变量: var temp_fahrenheit = 95; var temp_celsius = converToCelsius(temp_fahrenheit); alert(temp_celsius); 把华氏温度值95转换为摄氏温度值的结果 弹框35 变量名用下划线 函数名用驼峰 变量的作用域 function square(num){ total = num * num; return total; } var total = 50; var number = square(20); alert(total); //显示400 本意是让square()函数只把它计算出来的平方值返回给变量number,但因为未把这个函数内部的total变量明确地声明为局部变量,这个函数把名字同样是total的那个全局变量的值也改变了。
2.7对象 对象object是一种非常重要的数据类型,对象是自包含的数据集合,包含在对象里的数据可以通过两种形式访问 属性 和 方法: 属性是 隶属于某个特定对象的 变量; 方法是 只有某个特定对象才能调用的 函数。 对象就是由一些属性和方法组合在一起而构成的一个数据实体。 在JS里,属性和方法都使用"点"语法来访问: Object.property Object.method()
mood和age等变量存放“心情”“年龄”,如果它们是某个对象的属性 这里假设那个对象的名字是Person,我们就必须使用下面的记号来使用它们: person.mood person.age
假如Person对象还关联着walk()和sleep()之类的函数,这些函数就是这个对象的方法,我们必须使用下面的记号来访问它们: person.walk() person.sleep() 把这些属性和方法全部集合在一起,我们就能得到一个Person对象。
看不懂。 |