Skip to content

JavaScript

约 575 个字 54 行代码 预计阅读时间 3 分钟

JavaScript是用来控制网页的元素的,即实现动态网页。

JS和Java没有任何关系,但是相比于html和css js是真正普遍意义上的编程语言。

语法

基础

类型

JS 只有五类基础数据类型: * 布尔类型 * 数字,不区分整型和浮点 * 字符串,不区分单双引号 * NULL * Undefined

Note

undefined 表示声明了但是没有赋值;NULL表示不存在这个值

运算符

  • 算术运算,对string有重载
  • 比较运算符

定义变量

JS 使用 let 定义变量,JS语句需要使用;来结尾,可以使用const来定义常量,其实还可以使用var,但是不建议用

注释

JS使用//,和C/C++一样

数组

JS使用[]表示数组,JS提供了poppush以及length等方法

输出

JS通常使用console.log(message),但是还有alert(message)

分支/条件语句

同C,并且是使用花括号区分代码块

函数

这个就比较特别,JS是使用=>创建函数,格式为Syntax:(parameters)=>{body};

比如

const addTwo = x => {
    return x + 2;
};

// JS 的回调函数语法,对应C语言中的函数指针
const modifyArray = (array, callback) => {
    for (let i = 0; i < array.length; i++) {
        array[i] = callback(array[i]);
    }
};

let myArray = [1,2,3,4];
modifyArray(myArray,addTwo);

JS 允许创建匿名函数,比如上面的函数可以改写为

const modifyArray = (array, callback) => {
    for (let i = 0; i < array.length; i++) {
        array[i] = callback(array[i]);
    }
};

let myArray = [1,2,3,4];
modifyArray(myArray,x => {
    return x+2;
});

其它内置函数

map

map 会基于给定的函数和数组创建一个新数组,即建立一个映射,比如

let myArray = [1,2,3,4];
newArray = myArray.map(x => x*3);

filter

返回一个按照给定函数筛选之后的数组,比如

let myArray = [1,2,3,4];
newArray = myArray.filter(x => x>2);

对象

数据对象

JS 中的对象是键值对name:value的集合,比如

const myCar =  {
    maker : "China",
    year : 2025,
    color : "red"
};

console.log(myCar.maker);
console.log(myCar[`color`]);

// 这两种写法等价
const maker = myCar.maker;
const year = myCar.year;
// 不需要包含所有元素
const {maker, year} = myCar;

相等性

相等在 JS 里面特别“奇怪”,必须使用===比较原始值是否相等,但是对于数组它是按名等价的,而不是按照实际内容。

alt text

实际上 JS 中的对象名相当于是C++中的引用(指针),它们指向存储数据的实际地址,比较相等实际上是比较地址是否相同,下面这个数组拷贝说明了这一点,直接用=赋值数组是浅拷贝的,并没有开辟新的内存。

alt text

在 JS 中正确的深拷贝语法如下,有点像解包

let arr = [1,2,3];
let copy = [...arr];

其它编程语言中的相等==在JS中用于检验类型转化后的值是否相同

这个真的和C++比较像,例子也是一样的,这里的this是一个关键字

class Rectangle {
    constructor(width,height){
        this.width=width;
        this.heoght=height;
    }

    getArea = () =>{
        return this.width*this.height;
    };
}

添加

<script src="xxx.js"></script>