💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # JavaScript基础 ## JavaScript的特点 1. 解释型语言:解释型语言直接在运行环境中执行代码,一般一来说,与编译型语言相比,解释型语言的开发更为容易。 2. 类似于C和Java的语法结构 3. 动态语言:动态语言的变量和函数是不指定返回值类型的。 4. 基于原型的面向对象 5. 字面量的表现能力 6. 函数式编程:很长的一段时间里都被隐藏于过程式编程(面向对象也是过程式编程的一种)的概念至下。由于具备了匿名函数,可以把函数作为对象来使用,所以同时也能够支持函数式编程。 ## 变量的基础 变量的作用是给某一个值或是对象标注名称,通过使用关键字`var`就可以对变量进行声明。 ### 变量的使用方法 ```javascript var foo; // 声明变量 foo = 'abc'; // 对变量进行赋值 var foo2 = 'def'; // 声明变量并赋值 ``` 读取没有被声明的变量,就会引发`ReferenceError`异常。 ## 省略var 不通过`var`声明的变量为隐式声明变量,会变为全局变量,即使在函数体内也是。 ### 常量 ```javascript const FOO = 'abc'; // 通过关键词 const 进行声明, 习惯上变量名为大写。 ``` 即使给常量再次赋值,这个常量的值也不会发生改变。其实,对常量再次赋值是一种错误。 ## 函数基础 函数是由一连串的子程序(语句的集合)所组成的,可以被外部程序调用。向函数传递参数之后,函数可以访问一定的值。 ### 函数的声明与调用 ```javascript function 函数名 (参数, 参数, ...){ 函数体 } function sum(a,b){ return a + b; } ``` ### 匿名函数 其语法形式为在`function`后省略函数名的函数。 ```javascript function (参数, 参数, ...){ 函数体 } ``` 匿名函数表达式是一种表达式而非语句,所以也可以在表达式内使用。匿名函数的返回值是一个`Function`对象的引用。 ```javascript var sum = function(a,b){ return a + b; } ``` ### 函数是一种对象 JavaScript中的函数也是一种对象。函数名存在的意义是为了调用没有名称的函数。函数是一种包含了可执行代码并能够被其他代码调动的特殊的对象。 ## 对象基础 ### 对象的定义 是一个名称与值配对的集合。这种名称与值的配对被称为属性。JavaScript对象可以定义为属性的集合。JavaScript具备一种称为原型链的构造。通过这一构造,JavaScript对象实现了类似于类的继承能力。 ### 对象字面量表达式与对象的使用 ```javascript { 属性名: 属性值, 属性名: 属性值 } ``` 属性名可以是标识符、字符串值或是数值。属性值则可以是任意的值或对象。 ```javascript { a: 'abc', 1: '1' } ``` 在版本较老的IE中不支持以逗号结尾的对象字面量。 ### 属性访问 ```javascript var obj = { a: 'abc', b: 'cba' } // 点运算符 obj.a // 'abc' obj.c = 'ccc'; // 赋值 // 括号方式 obj[a] // 'abc' obj['d'] = 'ddd'; // 赋值 ``` ### 方法 可以把任意类型的值、对象或者函数赋值给对象的属性。实际上作为对象属性的函数也可称为一种方法。 ```javascript var obj = { sum: function(a, b){ return a + b; } } obj.sum(1,2); // 3 ``` ### new 表达式 `new`表达式的作用是生成一个对象。 ```javascript var obj = new Object(); ``` `new`之后所写的是函数名,在`new`之后写函数名的话,就会把该函数作为构造函数进行调用。 ## 数组的基础 数组是一种用于表达有顺序关系的值的集合的语言结构。 ```javascript var arr = [1, 100, 1000]; ``` 数组内的各个值被称作为元素,每一个元素都可以通过索引(下标)来快速读取 ```javascript var arr = [1, 100, 1000]; arr[0]; // 1 arr[1]; // 100 ``` JavaScript的数组支持同时包含不同类型的元素。