javascript语法结构
1. if语句
条件成立执行代码,否则什么也不做
// 条件成立执行代码,否则什么也不做
if(条件表达式){
// 条件成立执行的代码语句
}
2. if…else语句(双分支语句)
条件成立 执行 if 里面的代码,否则执行 else 里面的代码
// 条件成立 执行 if 里面的代码,否则执行 else 里面的代码
if(条件表达式){
// [如果] 条件成立执行的代码
}else{
// [否则] 执行的代码
}
3. if…else if 语句(多分支语句)
适合于检查多重条件。
// 适合于检查多重条件。
if (条件表达式1) {
语句1 ;
} else if (条件表达式2) {
语句2 ;
} else if (条件表达式3) {
语句3 ;
...
} else {
// 上述条件都不成立执行此处代码
}
4. 三元表达式
三元表达式
1. 由三元运算符组成的式子我们称为三元表达式
2. ++num 3 + 5 ? :
3. 语法结构 条件表达式 ? 表达式1 :表达式2
4. 执行思路
如果条件表达式的结果为真 则 返回 表达式1 的值
如果条件表达式的结果为假 则 返回 表达式2 的值。
// 三元表达式
// 1. 由三元运算符组成的式子我们称为三元表达式
// 2. ++num 3 + 5 ? :
// 3. 语法结构
// 条件表达式 ? 表达式1 :表达式2
// 4. 执行思路
// 如果条件表达式的结果为真 则 返回 表达式1 的值
// 如果条件表达式的结果为假 则 返回 表达式2 的值。
// 5. 代码例子
var num = 10;
var result = num > 5 ? '是的' : '不是的';
// 我们知道表达式是有返回值的
console.log(result);
// 代码解释
// if (num > 5) {
// return = '是的';
// } else {
// result '不是的';
// }
5. switch 语句
1. switch 语句也是多分支语句 也可以实现多选一
2. 语法结构
switch 转换, 开关 case 选项的意思
// 1. switch 语句也是多分支语句 也可以实现多选一
// 1. 语法结构 switch 转换, 开关 case 选项的意思
switch(表达式) {
case value1:
执行语句1;
break;
case value2:
执行语句2;
break;
...
default:
执行最后的语句;
}
6. 循环结构
1. for 循环
for 循环主要用于把某些代码循环若干次,通常跟计数有关系。
// for 循环主要用于把某些代码循环若干次,通常跟计数有关系。
// 其语法结构如下:
for (初始化变量; 条件表达式; 操作表达式 ) {
//循环体
}
2. while 循环
1. while 循环语法结构 while 当 ... 的时候
2. 执行思路 当条件表达式结果为true 则执行循环体 否则, 退出循环体
// 1. while 循环语法结构 while 当 ... 的时候
// 2. 执行思路 当条件表达式结果为true 则执行循环体
// 否则, 退出循环体
while (条件表达式) {
//循环体
}
3. do…while 循环
1. do ... while 循环 语法结构
2. 执行思路 跟while不同的地方在于do..while先执行一次循环体 再判断条件
// 1. do ... while 循环 语法结构
// 2. 执行思路 跟while不同的地方在于
// do..while先执行一次循环体 再判断条件
do {
// 循环体
} while (条件表达式);
4. continue 跳出本次循环
continue 关键字 退出本次(当前次的循环) 继续执行剩余次数循环
// continue 关键字 退出本次(当前次的循环) 继续执行剩余次数循环
for (var i = 1; i
continue; //只要遇见 continue就退出本次循环
}
console.log('执行' +i+ '次循环');
}
5. break 跳出整个循环
break 关键字 用于立即跳出整个循环(循环结束)
7. 数组
数组(Array) : 就是一组数据的集合
// 创建数组
// 1. 数组(Array) : 就是一组数据的集合
// 2. 利用 new 创建数组
var arr = new Array(); //创建了一个空的数组
// 3. 利用字面量创建数组 []
var arr = [];
8. 函数
1. 函数的使用
函数的使用分为两步:声明函数 和 调用函数
1. 声明函数
// 1. 声明函数
// function 函数名() {
// //函数体
// }
function sayHai() {
console.log('嗨嗨嗨嗨');
}
// (1) function 声明函数的关键字 全部小写
// (2) 函数是做某件事,函数名一般是动词 sayHi
// (3) 函数不调用自己不执行
2. 调用函数
函数名( );
sayHai();
// 调用函数的时候千万不要忘记加小括号
2. 函数传参
可以利用函数的参数实现函数重复不同的代码
// 2. 我们可以利用函数的参数实现函数重复不同的代码
function 函数名(形参1, 形参2, ...) {
// 在声明函数的小括号里面是 形参 (形式上的参数)
}
函数名(实参1, 实参2, ...) {
// 在函数调用的时候,小括号里面的是实参 (实际的参数)
}
// 3. 形参和实参的执行过程
function play(pro) {
console.log(pro);
}
play('乒乓球');
3. 形参实参个数匹配
(1) 如果实参的个数等于形参的个数,则正常输出结果
(2) 如果实参的个数大于形参的个数,会取到形参的个数
(3) 如果实参的个数小于形参的个数, 形参可以看做是不用声明的变量 num2 是
一个变量但是没有接受值 结果是undefined
// 3. 函数形参实参个数匹配
function getSum(num1, num2) {
console.log(num1 + num2);
}
// (1) 如果实参的个数等于形参的个数,则正常输出结果
getSum(1, 2);
// (2) 如果实参的个数大于形参的个数,会取到形参的个数
getSum(1, 2, 3);
// (3) 如果实参的个数小于形参的个数
// 形参可以看做是不用声明的变量 num2 是一个变量但是没有接受值 结果是undefined
getSum(1); //NaN
4. 函数的返回值形式
function 函数名() {
return 需要返回的结果;
}
函数名();
(1) 我们函数只是实现某种功能
最终的结果需要返回给函数的 调用者函数名() 通过return 实现的
(2) 只要函数遇见return 就把后面的结果 返回给函数的调用者
函数名() = return 都免的结果
代码例子:
// 4. 函数的返回值形式
function 函数名() {
return 需要返回的结果;
}
函数名();
// (1) 我们函数只是实现某种功能,最终的结果需要返回给函数的 调用者函数名()
// 通过return 实现的
// (2) 只要函数遇见return 就把后面的结果 返回给函数的调用者
// 函数名() = return 都免的结果
// 代码例子:
function getResult() {
return '憨憨';
}
getResult(); // getResult = '憨憨'
console.log(getResult());
//例:
// 利用函数 求两个数的最大值
function getMax(num1, num2) {
// if (num1 > num2) {
// return num1;
// } else {
// return num2;
// }
return num1 > num2 ? num1 : num2;
}
console.log(getMax(1, 5));
console.log(getMax(11, 5));
5. arguments 的使用
伪数组 并不是真正意义上的数组
1. 具有数组的 length 属性
2. 按照索引的方式进行存储的
3. 它没有真正数组的一些方法 pop() push() 等等
// arguments 的使用
function fn() {
console.log(arguments); // 里面存储了所有传递过来的参数
console.log(arguments.length);
}
fn(1, 2, 3);
// 伪数组 并不是真正意义上的数组
// 1. 具有数组的 length 属性
// 2. 按照索引的方式进行存储的
// 3. 它没有真正数组的一些方法 pop() push() 等等
9. 作用域
1. 作用域
![在这里插入图片描述](https://img-blog.csdnimg.cn/139734f61bd348e2a9fe7251a4b7ab13.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Iul5qKm5Li25b-G5rWB5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)
1.1 块级作用域
现阶段js中没有块级作用域,只有全局作用域和局部作用域。
在es6 的时候新增的块级作用域。
块级作用域 {}
2. 变量作用域
2.1 变量作用域的分类
![在这里插入图片描述](https://img-blog.csdnimg.cn/a3c48f1ef5df41e1a06fda95ad643dc7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Iul5qKm5Li25b-G5rWB5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)
2.2 全局变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/649753cba67949e18c7e289a53cf1315.png)
2.3 局部变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/53d4965c4058485794186dca120bf639.png)
2.4 全局变量和局部变量的区别
![在这里插入图片描述](https://img-blog.csdnimg.cn/0287ee7b97c44f36b35f16cdca487305.png)
3. 作用域链
![在这里插入图片描述](https://img-blog.csdnimg.cn/c7c693e62f634ad2b34c918ba0109f04.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Iul5qKm5Li25b-G5rWB5bm0,size_20,color_FFFFFF,t_70,g_se,x_16)
10. 预解析
预解析 1. 我们js引擎运行js 分为两步:预解析 + 代码执行 (1). 预解析 js引擎会把js 里面的所有的 var 还有 function 提升 到当前作用域的最前面 (2). 代码执行 按照代码书写顺序从上往下执行 2. 预解析分为 变量预解析 (变量提升) 和 函数预解析 (函数提升) (1). 变来提升 就是把所有的变量声明提升到当前作用域最前面,不提升赋值操作 (2). 函数提升 就是把所有的函数声明提升到当前作用域最前面,不调用函数
|