快速浏览
变量和赋值 |
// 所有在双斜杠之后的内容都是注释
// 变量是表示值的一个符号名字 // 变量是通过var关键字声明的 var x; // 声明一个变量x
// 值可以通过等号赋值给变量 x = 0; // 现在变量x的值为0 x; // => 0:通过变量获取其值
// JavaScript支持多种数据类型 x = 1; // 数字 x = 0.01; // 整数和浮点数共用一种数据类型 x = "hello world"; // 字符串 x = 'JavaScript'; // 字符串 x = true; // 布尔值 x = false; // 另一个布尔值 x = null; // null是一个特殊的值,意思是"空" x = undefined; // undefined和null非常类似 |
对象和数组 |
// JavaScript中的最重要的类型就是对象 // 对象是 名/值 对的集合, 或字符串到值映射的集合 var book = { topic : "JavaScript", fat : true };
// 通过"."或"[]"来访问对象属性 book.topic; // => "JavaScript" book["fat"]; // => true:另外一种获取属性的方式 book.author = "Flanagan"; // 通过赋值创建一个新属性 book.contents = {}; // {}是一个空对象, 它没有属性
// JavaScript同样支持数组(以数字为索引的列表) var primes = [2, 3, 5, 7]; // 拥有4个值的数组, 由"["和"]"划定边界 primes[0]; // => 2:数组中的第一个元素(索引为0) primes.lenth; // => 4:数组中的元素个数 primes[primes.length - 1]; // => 7:数组的最后一个元素 primes[4] = 9; // 通过赋值来添加新元素 primes[4] = 11; // 或通过赋值来改变已有的元素 var empty = []; // []是空数组, 它具有0个元素 empty.length; // => 0
// 数组和对象中都可以包含另一个数组或对象: var points = [{x : 0, y : 0}, {x : 1, y : 1}]; var data = [{ trial1 : [[1, 2], [3, 4]], trial2 : [[2, 3], [4, 5]] }]; |
运算符 |
// 运算符作用于操作数, 生成一个新的值 // 最常见的是算术运算符(Arithmetic operators) 3 + 2; // => 5:加法(addition) 3 - 2; // => 1:减法(subtraction) 3 * 2; // => 6:乘法(multiplication) 3 / 2; // => 1.5:除法(division) points[1].x - points[0].x; // => 1:更复杂的操作数也能照常工作 "3" + "2"; // => "32": + 可心完成加法运算也可以作字符串连接
// JavaScript定义了一些算术运算符的简写形式 var count = 0; // 定义一个变量 count++; // 自增1 count--; // 自减1 count += 2; // 自增2: 和"count = count + 2;"写法一样 count *= 3; // 自乘3: 和"count = count * 3;"写法一样 count; // => 6: 变量名本身也是一个表达式
// 相等关系运算符用来判断两值是否相等 // 不等、大于、小于运算符的运算结果是true或false var x = 2, y = 3; // 这里的 = 等号是赋值的意思, 不是比较相等 x == y; // => false: 相等 x != y; // => true: 不等 x < y; // => true: 小于 x <= y; // => true: 小于等于 x > y; // => false: 大于 x >= y; // => false: 大于等于 "two" == "three"; // => false: 两个字符串不相等 "two" > "three"; // => true: "tw"在字母表中的索引大于"th" false == (x > y); // => true: false和false相等
// 逻辑运算符是对布尔值的合并或求反 (x == 2) && (y == 3); // => true: 两个比较都是true, &&表示"与" (x > 3) || (y < 3); // => false: 两个比较不都是true, || 表示"或" !(x == y); // => true: | 求反 |
函数与“方法” |
// 函数是一段带有参数的JavaScript代码段, 可以多次调用 function plus_1(x){ return x + 1; } plus_1(y); // => 4: y为3
// 函数是一种值, 可以赋值给变量 var square = function(x){ return x * x; }; square(plus_1(y)); // => 16:在一个表达式中调用两个函数
// 当将函数和对象合在一起时, 函数就变成了"方法"(method) var a = []; // 创建一个空数组 a.push(1, 2, 3); // push()方法向数组中添加元素 a.reverse(); // 将数组元素的次序反转 // 也可以自定义自己的方法, "this"关键字是对定义方法的对象的引用 points.dist = function(){ var p1 = this[0]; var p2 = this[1]; var a = p2.x - p1.x; var b = p2.y - p1.y; return Math.sqrt(a * a + b * b); }; points.dist(); |
最常见的JavaScript控制语句 |
// 这些JavaScript语句使用该语法包含条件判断和循环 // 使用了类似C/C++、Java和其他语言的语法 function abs(x){ // 求绝对值的函数 if( x >= 0){ // if语句... return x; // 如果比较结果为true则执行这里的代码 }else{ return -x; // 当if条件不满足时执行else子句 } }
function factorial(n){ // 计算阶乘的函数 var product = 1; // 给product赋值为1 while(n > 1){ // 当()内的表达式为true时循环执行{}内的代码 product *= n; // "product = product * n;"的简写形式 n--; } // 循环结束 return product; // 返回product } factorial(4); // => 24: 1 * 4 * 3 *2
function factorial(n){ // 实现循环的另一种写法 var i, product = 1; for(i = 2; i <= n; i++){ product *= i; } return product; } factorial(5); // => 120: 1 * 2 * 3 * 4 * 5 |
“面向对象” |
// 定义一个构造函数以初始化一个新的Point对象 function Point(x, y){ // 按照惯例, 构造函数均以大写字母开始 this.x = x; // 关键字this指代初始化的实例 this.y = y; // 将函数参数存储为对象的属性 } // 不需要return
// 使用new关键字和构造函数来创建一个实例 var p = new Point(1, 1); // 平面几何中的点(1, 1)
// 通过给构造函数的prototye对象赋值来给Point对象定义方法 Point.prototype.r = function(){ return Math.sqrt(this.x * this.x // this指代调用这个方法的对象 + this.y * this.y); // 返回 x^2 + y^2的平方根 }; |
已使用 传智播客 创建。