JavaScript语法基础
2018-06-29 本文已影响0人
洛小白洛公子
//所有在双斜线之后的内容都属于注释
//变量是表示值的一个符号名字
//变量是通过var关键字声明的
var x; //声明一个变量
//值可以通过等号赋值给变量
x = 0; //现在变量的值为0
console.log(x) //通过变量获得其值
//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", //属性“topic”的值是"JavaScript"
fat: true //属性“fat”的值是"true"
}; //右花括号标记了对象的结束
//通过“.”或者“[]”来访问对象的属性
book.topic // =>"JavaScript"
book["fat"] // => true:另外一种获取属性的方式
book.author = "Flanagan"; //通过赋值创建一个新的属性
book.content = {}; //{}是一个空对象,它没有属性
//JavaScript同样支持数组(以数字为索引的列表)
var primes = [2, 3, 5, 7]; //拥有4个值的数组,有由“[”和“]”划定边界
primes[0] // => 2:数组中的第一个元素(索引为0)
primes.length // => 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]] //数组的元素也是数组
}
//运算符作用于操作数,生成一个新的值
//最常见的是算术运算符
3 + 2 //=> 5: 加法
3 - 2 // => 1 : 减法
3 * 2 // => 6 :乘法
3 / 2 // => 1.5:除法
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; //自乘:和"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 // => 大于等于
"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 plus1(x) { //定义了名为plus1的一个函数,带有参数x
return x + 1; //返回一个比传入的参数大的值
} //函数的代码块是由花括号包裹起来的部分
plus1(y); //=>4:y为3,调用函数的结果为 3 + 1
var square = function (x) { //函数是一种值,可以赋值给变量
return x * x; //计算函数的值
}; //分号标识了赋值语句的结束
square(plus1(y)); // => 16:在一个表达式中调用两个函数
//当函数赋值给对象的属性,我们称为“方法”,所有的JavaScript对象都含有方法
var a = []; //创建一个空数组
a.push(1, 2, 3); //push()方法想数组中添加元素
a.reverse(); //将数组元素的次序反转
//我们也可以定义自己的方法,“this”关键字是对定义方法的对象的引用
points.dist = function () { //定义一个方法来计算两点之间的距离
var p1 = this[0]; //通过this获得当前数组的引用
var p2 = this[1]; //并取得调用的数组前两个元素
var a = p2.x = p1.x; //X坐标轴上的距离
var b = p2.y - p1.y; //Y坐标轴上的距离
return Math.sqrt(a * a + b * b); //勾股定理,用Math.sqtr();来计算平方根
};
points.dist(); //=> 1.414:求得两个点之间的距离
//这些JavaScript语句使用该语言包含条件判断和循环
function abs(x) { //求绝对值的函数
if (x >= 0) { //if语句
return x; //如果比较结果为true则执行这里的代码
} //子句的结束
else { //当if条件不满足时执行else子句
return -x; //如果分支中只有一条语句,花括号是可以省略的
}
}
function factorial(n) { //计算阶乘的函数
var product = 1; //product赋值为1
while (n > 1) { //当()内的表达式为true时循环执行{}内的代码
product *= n; //product = product * n;的简写
n--; // n = n - 1;的简写
}
return product; //返回product
}
factorial(4);
function factorial2(n) { //实现循环的另一种写法
var i, product = 1;
for (i = 2; i <= n; i++)
product *= i;
return product;
}
//定义一个构造函数以初始化一个新的Point对象
function Point(x, y) { //按照惯例,构造函数均以大写字母开始
this.x = x; //关键字this代指初始化的实例
this.y = y; //将函数参数存储为对象的属性
} //不需要return
//使用new 关键字和构造函数老创建一个实例
var p = new Point(1, 1);//平面几何中的点
//通过给构造函数的prototype对象赋值来给Point对象定义方法
Point.prototype.r = function () {
return Math.sqrt( //返回 x^2 + y^2的平方根
this.x * this.x + //this值代调用这个方法的对象
this.y * this.y
);
};
p.r(); //=>1.414....