基础语法

JavaScript虽然⼀些设计理念和Java相去甚远,但是在基础语法层⾯上还是有⼀些相似之处的. 有了Java的基础很容易理解JavaScript的⼀些基本语法.

变量

创建变量(变量定义/变量声明/变量初始化),JS声明变量有3种⽅式

关键字 解释 示例
var 早期JS中声明变量的关键字,作⽤域在该语句的函数内 var name='zhangsan';
let ES6中新增的声明变量的关键字,作⽤域为该语句所在的代码块 内 let name='zhangsan';
const 声明常量的,声明后不能修改 const name='zhangsan';

注意事项:

1. JavaScript 是⼀⻔动态弱类型语⾔,变量可以存放不同类型的值(动态),⽐如:

var name = 'zhangsan';
var age = 20;

随着程序的运⾏,变量的类型可能会发⽣改变.(弱类型)

var a = 10; // 数字 
a = "hehe"; // 字符串 

Java是静态强类型语⾔,在变量声明时,需要明确定义变量的类型.如果不强制转换,类型不会发⽣变 化.

2. 变量名命名规则:

a. 组成字符可以是任何字⺟、数字、下划线(_)或美元符号($)

b. 数字不能开头

c. 建议使⽤驼峰命名

3. + 表⽰字符串拼接, 也就是把两个字符串⾸尾相接变成⼀个字符串.

4. \n 表⽰换⾏

数据类型

虽然js是弱数据类型的语⾔,但是js中也存在数据类型,js中的数据类型分为:原始类型和引⽤类 型,具体有如下类型

数据类型 描述
number 数字.不区分整数和⼩数.
string 字符串类型. 字符串字⾯值需要使⽤引号引起来,单引号双引号均可.
boolean 布尔类型.true真,false 假
undefined 表⽰变量未初始化.只有唯⼀的值undefined.

使⽤typeof函数可以返回变量的数据类型

<script>
 var a = 10;
 console.log(typeof a);//number
 var b = 'hello';
 console.log(typeof b);//string
 var c = true;
 console.log(typeof c);//boolean
 var d;
 console.log(typeof d);//undefined
 var e = null;
 console.log(typeof e);//null
</script>

运算符

JavaScript中的运算符和Java⽤法基本相同

运算符类型 运算符
算术运算符 + ,- ,* ,/ ,%
⾃增⾃减运算符 ++ ,--
赋值运算符 = ,+= ,-= ,*= ,/= ,%=
⽐较运算符 < ,> ,,>= ,!= ,!== == ⽐较相等(会进⾏隐式类型转换) === ⽐较相等(不会进⾏隐式类型转换)
逻辑运算符 && ,|| ,!
位运算符 • & 按位与 • | 按位或 • ~ 按位取反 • ^ 按位异或
移位运算符 • 左移 • >> 有符号右移(算术右移) • >>> ⽆符号右移(逻辑右移)
三元运算符 条件表达式? true_value : false_value

代码⽰例:

<script>
 var age = 20;
 var age1 = "20";
 var age2 = 20;
 console.log(age == age1);//true, ⽐较值 
 console.log(age === age1);//false, 类型不⼀样 
 console.log(age == age2);//true, 值和类型都⼀样 
</script>

JavaScript对象

数组

数组定义

创建数组有两种⽅式

1. 使⽤ new 关键字创建

//Array 的 A 要⼤写 
var arr = new Array();

2. 使⽤字⾯量⽅式创建 [常⽤]

var arr = [];
var arr2 = [1, 2, 'haha', false]; // 数组中保存的内容称为 "元素" 

注意:JS的数组不要求元素是相同类型.

这⼀点和C,C++,Java等静态类型的语⾔差别很⼤.但是Python,PHP等动态类型语⾔也是如此.

数组操作

1. 读:使⽤下标的⽅式访问数组元素(从0开始)

2. 增:通过下标新增,或者使⽤push进⾏追加元素

3. 改:通过下标修改

4. 删:使⽤splice⽅法删除元素

<script>
 var arr = [1, 2, 'haha', false];
 //读取数组 
 console.log(arr[0]); //1
 //添加数组元素 
 arr[4] = "add"
 console.log(arr[4]);//add
 console.log(arr.length);//5, 获取数组的⻓度 
 //修改数组元素 
 arr[4] = "update"
 console.log(arr[4]);//update
 //删除数组元素 
 arr.splice(4,1);// 第⼀个参数表⽰从下标为4的位置开始删除. 第⼆个参数表⽰要删除的元
素个数是 1 个 
 console.log(arr[4]);//undefined 元素已经删除, 如果元素不存在, 结果为undefined 
 console.log(arr.length);//4, 获取数组的⻓度 
</scirpt>

注意:

1. 如果下标超出范围读取元素,则结果为undefined

2. 不要给数组名直接赋值,此时数组中的所有元素都没了.

相当于本来arr是⼀个数组,重新赋值后变成字符串了.

var arr = ['⼩猪佩奇', '⼩猪乔治', '⼩⽺苏西'];
arr = '⼩猫凯迪';

函数

语法格式

// 创建函数/函数声明/函数定义 
function 函数名(形参列表) {
 函数体
 return 返回值;
}
// 函数调⽤ 
函数名(实参列表) // 不考虑返回值 
返回值 = 函数名(实参列表) // 考虑返回值 

• 函数定义并不会执⾏函数体内容,必须要调⽤才会执⾏.调⽤⼏次就会执⾏⼏次.

function hello() {
 console.log("hello");
}
// 如果不调⽤函数, 则没有执⾏打印语句 
hello();

• 调⽤函数的时候进⼊函数内部执⾏,函数结束时回到调⽤位置继续执⾏.可以借助调试器来观察.

• 函数的定义和调⽤的先后顺序没有要求.(这⼀点和变量不同,变量必须先定义再使⽤)

// 调⽤函数 
hello();
// 定义函数 
function hello() {
 console.log("hello");
}

关于参数个数

实参和形参之间的个数可以不匹配.但是实际开发⼀般要求形参和实参个数要匹配

1. 如果实参个数⽐形参个数多,则多出的参数不参与函数运算

sum(10, 20, 30);

2. 如果实参个数⽐形参个数少,则此时多出来的形参值为undefined

sum(10);

JS的函数传参⽐较灵活,这⼀点和其他语⾔差别较⼤.事实上这种灵活性往往不是好事.

函数表达式

另外⼀种函数的定义⽅式

var add = function() {
 var sum = 0;
 for (var i = 0; i < arguments.length; i++) {
 sum += arguments[i];
 }
 return sum;
}
console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4)); // 10
console.log(typeof add); 

此时形如function() { } 这样的写法定义了⼀个匿名函数,然后将这个匿名函数⽤⼀个变量来表 ⽰.

后⾯就可以通过这个add变量来调⽤函数了.

JS中函数是⼀等公⺠,可以⽤变量保存,也可以作为其他函数的参数或者返回值.

对象

在JS中,字符串,数值,数组,函数都是对象.

每个对象中包含若⼲的属性和⽅法.

• 属性:事物的特征.

• ⽅法:事物的⾏为.

JavaScript的对象和Java的对象概念上基本⼀致.只是具体的语法表项形式差别较⼤.

1. 使⽤字⾯量创建对象[常⽤]

使⽤{}创建对象

var a = {}; // 创建了⼀个空的对象 
var student = {
 name: '蔡徐坤',
 height: 175,
 weight: 170,
 sayHello: function() {
 console.log("hello");
 }
};

• 使⽤{}创建对象

• 属性和⽅法使⽤键值对的形式来组织.

• 键值对之间使⽤,分割.最后⼀个属性后⾯的,可有可⽆

• 键和值之间使⽤:分割.

• ⽅法的值是⼀个匿名函数.

使⽤对象的属性和⽅法:

// 1. 使⽤ . 成员访问运算符来访问属性 `.` 可以理解成 "的" 
console.log(student.name);
// 2. 使⽤ [ ] 访问属性, 此时属性需要加上引号 
console.log(student['height']);
// 3. 调⽤⽅法, 别忘记加上 ()  
student.sayHello();

2. 使⽤newObject创建对象

var student = new Object(); // 和创建数组类似 
student.name = "蔡徐坤";
student.height = 175;
student['weight'] = 170;
student.sayHello = function () {
 console.log("hello");
}
console.log(student.name);
console.log(student['weight']);
student.sayHello();

注意,使⽤{}创建的对象也可以随时使⽤student.name = "蔡徐坤"; 这样的⽅式来新增属性.

3. 使⽤构造函数创建对象

function 构造函数名(形参) {
 this.属性 = 值;
 this.⽅法 = function...
}
var obj = new 构造函数名(实参);

注意:

• 在构造函数内部使⽤this关键字来表⽰当前正在构建的对象.

• 构造函数的函数名⾸字⺟⼀般是⼤写的.

• 构造函数的函数名可以是名词.

• 构造函数不需要return

• 创建对象的时候必须使⽤new关键字.

this相当于"我"

使⽤构造函数重新创建猫咪对象

function Cat(name, type, sound) {
 this.name = name;
 this.type = type;
 this.miao = function () {
 console.log(sound); // 别忘了作⽤域的链式访问规则 
 }
}
var mimi = new Cat('咪咪', '中华⽥园喵', '喵');
var xiaohei = new Cat('⼩⿊', '波斯喵', '猫呜');
var ciqiu = new Cat('刺球', '⾦渐层', '咕噜噜');
console.log(mimi);
mimi.miao();

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐