以下都是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

最后修改:2019 年 03 月 30 日
喜欢我的文章吗?
别忘了点赞或赞赏,让我知道创作的路上有你陪伴。