1 //所有的双斜线之后的内容都属于注释; 2 //变量是表示值的一个符号名字; 3 //变量是通过var 关键字声明的; 4 var x; //声明一个变量 5 //值可以通过等号赋值给变量 6 x = 0; //现在的变量x的值为0 7 x //=> 0:通过变量获取其值 8 //javascript 支持多种数据类型 9 x = 1; // 数字 10 x = 0.01; // 整数与实数共用一种数据类型 11 x = "hello world"; // 由双引号内的文本构成的字符串 12 x = 'javascript'; // 由单引号内的文本同样构成字符串 13 x = true; // 布尔值 真 14 x = false; // 布尔值 假 15 x = null; // null 是一个特殊的值 ”空“ 16 x = undefined;// undefined 和null 非常类似
javascript中两个非常重要的数据类型是对象和数组
1 //javascript中最重要的类型就是对象 2 //对象是名/值对的集合,或字符串到值映射的集合 3 var book = { 4 topic: 'javascript', 5 fat: true 6 }; 7 //通过“. ”或“[]”来访问对象属性 8 book.topic // => javascript 9 book["fat"] // =>返回的是true 另外一种获取属性的方式 10 book.author = "flanagan"; //通过赋值来创建一个属性 11 book.contents = {}; //{} 是一个空对象没有属性 12 13 14 //javascript同样支持数组 (以数字为索引的列表) 15 var primes =[2,3,5,7]; //拥有4个值的数组,由“”["和"]“”划定边界 16 primes[0]; //=>2:数组中的第一个元素(索引为0) 17 primes.length; //=> 4 :数组中的个数 18 primes[primes.length-1] //=> 7:数组的最后一个元素 19 primes[4] = 9; //通过赋值来添加新元素 20 primes[4] = 11; //通过赋值来改变已有的元素 21 var empty = []; // []空数组,它具有0个元素 22 empty.length //=>0 23 //数组和对象中都可以包含另一个数组或者对象: 24 var points =[ 25 {x:0,y:0}, //具有两个元素的数组 26 {x:1,y:1} //每个元素都是一个对象 27 ]; 28 29 var data ={ //一个包含两个属性的对象 30 trial1: [[1,2],[3,4]], //每一个属性都是数组 31 trial2: [[2,3],[4,5]] //数组的元素也是数组 32 };
javascript中常见的表达式写法像下面代码这样使用运算符(operator):
1 //运算符作用于操作数,生成一个新的值 2 //最常见的算术运算符 3 3 + 2 // =>5 : 加法 4 3 - 2 // =>1 : j减法 5 3*2 // =>6 : 乘法 6 3/2 // => 1.5 : 除法 7 points[1].x - points[0].x // => 1 : 更复杂的操作数也能照常工作 8 "3" + "2" // => "32": + 可以完成加法运算也可以作字符串连接 9 10 //javascript 定义了一些运算符的简写形式 11 12 var count = 0; //定义了一个变量 13 count++; //自增1 14 count--; //自减1 15 count += 2; //自增2: 和“count = count + 2;” 写法一样 16 count *= 3; //自乘3: 和“count = count *3;”写法一样 17 count // =>6: 变量名本身也是一个表达式
1 //相等关系运算符用来判断两值是否相等 2 //不等 、大于、小于运算符的结果是true或false 3 var x = 2, y = 3; //这里的 = 等号是赋值的意思,不是比较相等 4 x == y //=> false :相等 5 x != y //=> true :不等 6 x < y //=>true :小于 7 x <= y //true :小于等于 8 x > y //=>false :大于 9 x >= y //=>false :大于等于 10 "two" == "three" //=>false :两个字符串不相等 11 "two" > "three" //=>true :"tw"在字母表中的索引大于"th" 12 false == (x > y) //=>true :false和false 相等 13 14 //逻辑运算符是对布尔值的合并或求反 15 (x == 2) && (y == 3) //=> true :两个比较都是true, &&表示"与" 16 (x > 3) || (y < 3) //=> false :两个比较都不是true, ||表示"或" 17 !(x == y) //=> true : !求反 18 19 20 //函数是带有名称(named)和参数的javascript代码段,可以一次定义多次调用 21 22 function plus1(x){ //定义了名为plus1的一个函数,带有参数的x 23 return x +1 //返回一个比传入的参数大的值 24 } // 函数的代码块有花括号包裹起来的部分 25 plus1(y) //=> 4 :y为3,调用函数的结果为3+1 26 var square = function(){ //函数是一种值,可以复制给变量 27 return x*x //计算函数的值 28 }; //分号标示了赋值语句的结束 29 square(plus1(y)) // => 16 :在一个表达式中的调用两个函数
//当将函数和对象合写在一起时,函数就变成了“方法”(method):
1 //当函数赋值给对象的属性,我们称为“方法”,所有的javascript对象都含有方法 2 var a =[]; //创建一个空数组 3 a.push(1,2,3); //push()方法向数组中添加元素 4 a.reverse(); //另一个方法 reverse() 将数组元素的次序反转 5 //我们也可以定义自己的方法 “this”关键字是对定义的方法的对象的引用 6 points.dist=function(){ //定义一个方法用来计算两点之间的距离 7 var p1=this[0]; //通过this 获得对当前数组的引用 8 var p2=this[1]; //并取得调用的数组前两个元素 9 var a = p2.x-p1.x; //x坐标轴上的距离 10 var b = p2.y-o1.y; //y坐标轴上的距离 11 return Math.sqrt(a*a + b*b) //勾股定理 用Math.sqrt()来计算平方根 12 }; 13 points.dist(); //=> 1.44 求得两点之间的距离 14 15 // 这些javascript语句使用该语法包含条件判断和循环 16 function abs(x) { //球绝对值函数 17 if(x>=0){ //if语句 18 return x; //如果为true则执行这里的代码 19 }else{ //if条件不满足时执行else语句 20 return -x; 21 } 22 } 23 24 function factorial(n) { //计算阶乘函数 25 var product=1; //product赋值为1 26 while(n>1){ //当n大于1时执行花括号语句 27 product *=n; //product*=n 是 product= produtct*n的简写形式 28 n--; //n--;是 n=n-1的简写形式 29 } 30 return product; //返回product 31 } 32 factorial(4); //=>24: 1*4*3*2 33 34 function factorial2(n) { //实现循环的另一种函数写法 35 var i,product =1; //product赋值为1 36 for(i=2;i<n;i++){ //将i从2自增到n; 37 product *=i; //循环体,当循环只有一句话可以省略{}; 38 return product; 39 } 40 41 } 42 factorial2(5); //=> 120 : 1*2*3*4*5; 43 44 //javascript是一种面向对象的编程语言 45 //定义一个构造函数以及初始化一个新的point对象 46 function Point(x,y) { //按照惯例,构造函数均已大写字母开始 47 this.x=x; //关键字this指代初始化的实例 48 this.y=y; //将函数参数储存为对象的属性 49 50 } 51 52 var p= new Point(1,1); //使用new关键字和构造函数来创建一个实例 53 Point.prototype.r =function() { //通过给构造函数的prototype对象赋值来给point对象定义方法 54 return Math.sqrt( 55 this.x*this.x+this.y*this.y; 56 ) 57 }; 58 // point实例对象p(以及所有的point实例对象)继承了方法 r() 59 p.r(); //=>1.414...