一.js运算符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js运算符</title>
</head>
<body>
<script>
// a = 1
// b = 2
// c = '3'
//所有的基本数值运算,比如加减乘除,如果参与运算的双方分别是字符串和数字,那么在执行加法运算的时候,会将数字当成字符串来使用,得到的是字符串拼接的结果,其他的都会将字符串当成数字来使用,得到正常的数值运算结果,但是这里说的字符串,它的内容都必须是数字值
// console.log(c - a)
// console.log(typeof (c - a))//查看数据类型
// console.log(c/b)
// console.log(a + c)
// console.log(b + c)
// console.log('abc' - a)//结果NaN代表非数字值,但是这个非数字值的数据类型还是数字类型
//下面两个东西都可以代表空
//null代表的是变量定义了有值,但是它的值为空
//undefined代表的是变量没有定义,或者定义了没有赋值
// console.log(null + a)//null代表数字0
// console.log(undefined + 1)//NaN
///比较运算符
//两个等号是相等,只判断内容,不判断数据类型
//三个等号是全等,判断内容的同时,还要判断数据类型
//相等不一定全等,但全等一定相等
//字符串或者布尔值,与数字进行大小比较的话,那么他们都会先转换数字,然后再去比较
// console.log(1 == '1')
// console.log(1 === '1')
// console.log('abcd' > 1)//false
//逻辑运算符:与(&&)、或(||)、非(!)
//优先级:非>与>或
// console.log(1 == 1 && 2 == 2)
// console.log(1 == 1 && 2 != 2)
// console.log(1 == 1 || 2 != 2)
// console.log(1 != 1 || 2 != 2)
// console.log(!true)
//赋值运算符
//++(给某个变量加一)、--(给某个变量减一)
a = 1
console.log(++a)//相当于a+=1
console.log(--a)//相当于a-=1
//当++或者--写在变量后面的时候,还是会改变,只不过它是等当前这一轮操作执行完之后,再去改变
console.log(a++)
console.log(a)
console.log(a++ == 2, a)
</script>
</body>
</html>
二.js流程控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js流程控制</title>
</head>
<body>
<script>
var weather = '晴天'
//在js中,if后面的条件,需要用括号包裹,if下面的代码块,要用大括号包裹,不需要冒号
//在js中,根据大括号来控制上下级,而不是缩进
// if (weather == '下雨天'){
// console.log('在家学习')
// }else {
// console.log('出去玩')
// }
//如果有多个条件,可以使用else if(类似于python中的elif)
// if (weather == '下雨天'){
// console.log('在家学习')
// }else if(weather == '晴天'){
// console.log('逛街')
// }else{
// console.log('出去玩')
// }
//switch会根据判断关键字后面的值,和哪个case后面的值相等,来选择要执行的语句
//如果case后面的语句中,没有break的话,那么他会接着往下执行,比如一开始选择执行的是case2,但是case2后面没有break,而且case2下面还有别的case或者default,那么他们也会跟着执行
switch (0) {
case 0:{
console.log(0);
break;
}
case 1:{
console.log(1);
break;
}
case 2:{
console.log(2);
break;
}
default:{
console.log(3);//类似于else,当switch后面的值和任何一个case都不相等的时候,就会执行这个
break;
}
}
</script>
</body>
</html>
三.js循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js循环</title>
</head>
<body>
<script>
//for,for in, while,do while
//for结构:for(循环变量(有值的);循环结束条件;更新循环变量){代码块}
// for (var i=1;i<10;i++){
// console.log(i)
// }
//while
// var i = 1
// while (i<10){
// console.log(i)
// i++
// }
//do while和while差不多,只不过,while如果你的条件没写好或者情况特殊,那么有可能while内部的代码一次都不会执行,但是dowhile他是先执行完一次的内部代码,然后再去判断条件
//while先判断再执行 do while先执行再判断
var i = 1
do{
console.log(i)
i++
}while(i<10)
</script>
</body>
</html>
四.js字符串方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js字符串方法</title>
</head>
<body>
<script>
var st = 'this_is_string';
console.log(st);
//获取字符串长度
console.log(st.length);
//下标索引取值,这里的下标概念和python一样
console.log(st[2]);
//查找元素,获取下标,只找一次,如果没有这个元素就返回-1
console.log(st.indexOf('i'));
//根据下标查找元素
console.log(st.charAt(9));
//元素替换
//js中字符串内的元素,不可以直接修改
st[2] = 'I'
console.log(st)//不能
console.log(st.replace('s', 'S'));
//字符串分割,根据某个元素去切割字符串,得到的结果是一个列表
console.log(st.split('_'))
//字符串切片,左闭右开,支持负索引,不可以倒着切(可以-6到-1,不能-1到-6)
console.log(st.slice(5, 9));
console.log(st.slice(-6, -1));
console.log(st.slice(-1, -6));//不会报错,只是得到一个空值
//可以倒着切(左开右闭)的切片,但是不支持负索引,倒着切出来的内容还是正的
console.log(st.substring(6, 9));
console.log(st.substring(9, 6));
//字符串截取,第一个是起始下标,第二个是取多少元素,包括起点,第二个参数超过了最大值也不会报错
console.log(st.substr(3, 20));
</script>
</body>
</html>
五.js数组方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js数组方法</title>
</head>
<body>
<script>
//js中的数组,就相当于python中的列表
var arr = [1,2,3];
//长度
console.log(arr.length);
//根据元素查找下标,跟字符串里面的一样
console.log(arr.indexOf(2));
//根据下标获取元素
console.log(arr[2]);
//添加
console.log(arr.push('abc', 456));//相当于python中的append,不过它可以一次性追加多个,返回数组长度
console.log(arr);
arr.unshift('qwe',111);//添加到数组的开头位置,返回数组长度
console.log(arr);
//删除
console.log(arr.pop());
console.log(arr.shift());//删第一个
//切片,左闭右开
console.log(arr.slice(0, 3));
//修改
arr[2] = 200
console.log(arr);
</script>
</body>
</html>