请注意,本文编写于 2119 天前,最后修改于 2119 天前,其中某些信息可能已经过时。
以下都是es5语法
基础语法
//语句结束使用分号,可写可不写,建议写
//JavaScript定义变量无需申明类型,使用var 关键字
var x = 1;
//单行注释
/*
多行注释
*/
//基本数据类型,number、字符串、布尔值
//Number,JavaScript不区分整数和浮点数
var test = 123; // 整数123
test = 0.456; // 浮点数0.456
//字符串
test = "hello";
//==,会先自动转换等号两边数字的类型,再比较
//===,如果数据类型不同,则false,否则直接比较值,推荐
//null和undefined,null 表示空,undefined 表示未定义
//数组
var testArray = [1, 2, 3.14, 'Hello', null, true];
testArray = new Array(1, 2, 3.14, 'Hello', null, true);
arr[0]; // 返回索引为0的元素,即1
arr[5]; // 返回索引为5的元素,即true
arr[6]; // 索引超出了范围,返回undefined
//strict模式,即所有变量必须使用var关键字申明,否则报错
'use strict';//加在第一行
//if条件语句
var age = 20;
if (age >= 18)
alert('adult');
//while
var x = 0;
var n = 99;
while (n > 0) {
x = x + n;
n = n - 2;
}
//for循环
var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
x = arr[i];
console.log(x);
}
var n = 0;
do {
n = n + 1;
} while (n < 100);
n; // 100
//for-in 循环遍历对象的属性
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key); // 'name', 'age', 'city'
}
其他语法
对象
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。它类似于java中的Map
,但是key只能是字符串。写法上很类似json的结构。
和java的对象有点类似,但它不是基于类实例化出来的,而是直接申明的一个具体的对象。
var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
xiaoming.name; // '小明'
xiaoming.birth; // 1990
xiaohong['name']; // '小红'
xiaohong['birth']; // 1990
此外,数组、函数本身也可以看做一个对象。
数组的每个元素就可以看做是序号->对应的值的键值对集合。
函数的每个属性也可以看做是属性名->属性值的键值对集合
函数
二种定义方式
//方式1
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
//方式2
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};
abs(10); // 返回10
abs(-9); // 返回9
//允许传入任意个参数而不影响调用
abs(10, 'blablabla'); // 返回10
abs(-9, 'haha', 'hehe', null); // 返回9
abs(); // 返回NaN
函数获取传入的参数列表
arguments
:函数内部可以直接使用这个默认的参数,包含了传入的所有参数。
function foo(x) {
console.log('x = ' + x); // 10
for (var i=0; i<arguments.length; i++) {
console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);
rest
:包含了除函数已经申明的参数列表外的所有传入参数
function foo(a, b) {
var i, rest = [];
if (arguments.length > 2) {
for (i = 2; i<arguments.length; i++) {
rest.push(arguments[i]);
}
}
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
面向对象编程
JavaScript的es5面向对象编程不是类+实例,所以变得很难理解。
参考文章
https://cloud.tencent.com/developer/article/1031481
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000