条件判断
01直接量
/* 1.直接量是什么? */
// 直接在 js 中 写的数据~~!
// 2.数据类型是什么?
// 因为 JS 中的数据 明显可以分成很多类,所以 就 分出 了 若干个 数据类型
// 3.如何检测数据类型?
// typeof --> 类型名称字符串
var a = typeof '小白白'; // var a = 'string';
var b = typeof(5201314); // var b = 'number'
// 4.变量是什么?
// 1.本质上 是 内存里的 一块 空间,变量名 是 这个空间的 “代号”
// 2.通俗的说,变量就是一个 容器,用来装数据~~! 一次 只能装一个数据
var tcName = '波老师';
tcName = '泽老师';
console.log(tcName);
console.log(tcName + ',我爱你~~~');
02数据类型
//1.简单数据类型 ----------------------------------------------------
//1.1 数值类型 - Number
// a.整数 小数 负数 都属于数值
// b.最大值和最小值 -> Number.MAX_VALUE 和 Number.MIN_VALUE
// c.数值类型 中的三个特殊值:Infinity 、-Infinity 、NaN
// d.无穷大 Infinity 无穷小 -Infinity
// e.【NaN - 非数值】 (Not a number) : 代表 算数运算后的错误结果
//a. 当 算数运算符 运算 一个 不是 数值的 数据时,无法计算结果,所以 返回 NaN
var num1 = 12 * '我爱你'; // NaN
console.log(num1); // NaN
//b. 任何值 与 NaN 运算结果 都是 NaN
console.log(NaN / 100);
//c. NaN 与任何值都不相等 ,包括它自己
//d. 使用 isNaN(x) 来 检测 x 是不是 一个 NaN
// 如果 x 是 一个 NaN , 就返回 true
// 不是 , false
console.log(' isNaN(520) = ' + isNaN(520));
console.log(' isNaN(\'讨厌\') = ' + isNaN('讨厌'));
//1.2 字符串类型 - String
var str1 = '我是你哥哥';
var str2 = "我是你姐姐";
var str3 = '我喜欢"小狗" ,你\'呢?'
var str4 = "我喜欢'小猫',你是吗?";
console.log('我要换行\n不是换老婆~~!');
//1.3 布尔值类型 - Boolean
var male = true;
var female = false;
//1.4 未定义类型 - Undefined
// 有且只有一个值 undefined
// 当一个 变量 声明 但么有赋值,默认就是 undefined
var a;
console.log(a);
//1.5 空类型 - Null
// 有且只有一个值 null
// prompt 输入框,用户点击取消时,返回的 是 null
// var usrName = prompt('请输入您的名字:');
// console.log('usrName = ' + usrName);
// undefined 和 null 判等
console.log(1 == 1); // true
console.log(undefined == null); // true
console.log(undefined === null); // false
//2.复杂数据类型-------------------------------------------------
// Object - 对象
// Array - 数组
// Function - 函数
// 自定义类型
03复合运算符
//1. 算数运算符 + - * / % **
// ** 求次方
console.log(2**3);// 2 * 2 * 2
//2. = 赋值运算符
// = 会 将 右边的 值 赋给 左边
var a = 1;
// var usrName = prompt('您的女友名字:');
//3.复合赋值运算符----------------------------------------------
// 作用:将 变量里的值 取出 ,与另一个 值运算,并将 结果 重新 赋值 到这个变量
// 口诀:对某个变量自身 做 算数运算
// += -= *= /* %=
//3.1 += -------------------
var num = 1;
// num = num + 2;
num += 2;
console.log(num); // 3
//3.2 -=
var num = 100;
num -= 40; // num = num - 40;
console.log(num); // 60
//3.3 *=
var num = 5;
num *= 5; // num = num * 5;
console.log(num); // 25
//3.4 /=
var num = 100;
num /= 5;
console.log(num);//20
//4.神奇的 += ---------------------------------------------------------------
//4.1 如果 变量 是和 数值 运算,那么 += 就起到了 算数运算的 效果
var num = 110;
num += 120;
console.log(num);
//4.2 如果 变量 是和 非数值 运算,那么 += 就会起到 字符串的连接 作用
var str = 123;
str+='我爱你~~~';
str+='你爱我妈?';
str+=',分手~~!'
console.log('str ='+str); // 123我爱你~~~你爱我妈?,分手~~!
04比较运算符
//1.比较运算符:比大小的~~!!
// 运算符 本身 没有意义,要和 两边的数据 组成 表达式 才有意义
// > < >= <= == != === !==
// 【永远都会返回 bool值】,要么 返回 true,要么 返回 false
console.log(1 > 2); // false
console.log(1 < 2); // true
console.log(1 == 2); // false
console.log(1 == 1); // true
// == 只判断值是不是相等,不判断类型
// === 全等号,判断值 也 判断类型
console.log(1 == '1');// true
console.log(1 === '1');// false
console.log(1 === 1);// true
// 大于等于 和 小于等于
// 注意: 条件是或的关系,只要 满足一个 就返回 true,只有两个都不满足时才返回 false
console.log(1 >= 2); // false
console.log(1 >= 1); // true
console.log(1 >= 0); // true
// 不等号 全不等号
console.log(1 != 1); // false
console.log(1 != 2); // true
console.log(1 != '1'); // false
console.log(1 !== 1); // false
05逻辑运算符
//1.逻辑运算符
// && || !
//1.1逻辑与 && ---------------------------------------------------------------
// 只有 && 两边的 数据 都为 true 时,整个 逻辑与 表达式 才返回 true
// 只要有一个是 false,整个 逻辑与表达式 就返回 false
// 口诀:一假都假
// 左边的表达式 && 右边的表达式 -> 表达式结果
// true && true true
// false && true false
// true && false false
// 找男朋友 -- 高 富 帅 情商高
// 如果 四个 条件 都要满足 才 成立: 逻辑与 var isOk = 高 && 富 && 帅 && 情商高;
// 高富帅情商 4个条件 都要满足 才 返回 true
// 只要有一个不满足,都返回 false
var isOk = 1 > 2 && 1 >= 0; // false
// false && true // false
var isOk = 1 == 1 && 1 >= 0; // true
// true && true // true
var isOk = 1 == 1 && 1 >= 0 && 2 > 1; // true
// true && true && 2 > 1
// true && true
//1.2 逻辑或 || ---------------------------------------------------------------
// 只要 || 两边有一个是 true,整个表达式 就返回 true
// 两边都是 false,整个表达式 才返回 false
// 口诀:一真都真
// 左边的表达式 || 右边的表达式 -> 表达式结果
// true || false true
// false || true true
// false || false false
// 如果 四个 条件中, 满足一个就成立:逻辑或 var isOk = 高 || 富 || 帅 || 情商高;
// 高富帅情商 4个条件 只要满足一个 就 返回 true
// 只有4个条件都不满足,才返回 false
var isOk = 1 > 2 || 1 >= 0; // true
// false || true -> true
var isOk = 1 == 1 || 1 == 0; // true
// true || false; -> true
//1.3 逻辑非(取反运算符)
// 可以用来 将 一个 布尔值 变成 相反的值
// !true -> false
// !false -> true
console.log('!true = ' + !true);
console.log('!false = ' + !false);
console.log(!(1 > 2));// true
06条件语句
//1.顺序结构 语句 ,由上到下的 顺序执行 每一行代码
// console.log('裙姐考试回来了~~');
// console.log('他爸爸问他打了多少分');
// console.log('裙姐打了59分');
// console.log('他爸爸狠狠的打他屁股了~~~');
// console.log('裙姐睡着了~~~');
//2.条件结构 语句
//2.1 if 单个条件
// if(bool){
// if 代码块
// }
// 如果 if的小括号中 是 true,那么 就执行 if代码块(if后紧跟着的 大括号里的代码)
// 是false, 那就跳过 if代码块,执行 后面的代码
// var score = 59;
// console.log('裙姐考试回来了~~');
// console.log('他爸爸问他打了多少分');
// console.log('裙姐打了 ' + score + ' 分');
// if (score < 60) {
// console.log('他爸爸狠狠的打他屁股了~~~');
// }
// console.log('裙姐睡着了~~~');
//2.2 if else 二选一
// if(bool){
// if 代码块
//}
//else{
// else代码块
//}
// 如果 if 中的是 true,就执行 if 代码块
// false,就执行 else代码块
// 二选一:if else 两个 代码块,只会 根据条件结果 执行一个
// var score = 89;
// console.log('裙姐考试回来了~~');
// console.log('他爸爸问他打了多少分');
// console.log('裙姐打了 ' + score + ' 分');
// if (score < 60) { // 如果 true,就执行 if代码块 ,如果 是 false,就执行 else 代码块
// console.log('他爸爸狠狠的打他屁股了~~~');
// } else {
// console.log('他爸爸给了他1000块钱~~~');
// }
// console.log('裙姐睡着了~~~');
//2.3 if else if else ......多条件
/* 多条件 if 可以用来 在一个业务中 根据不同条件 执行不同的代码, 一旦满足一个条件,后面的else if 就不执行了,和 多个 if 比起来,执行效率更高
if(bool){
}else if(bool){
}else if(bool){
}else{
}
*/
// var score = 59;
// console.log('裙姐考试回来了~~');
// console.log('他爸爸问他打了多少分');
// console.log('裙姐打了 ' + score + ' 分');
// if (score < 60) {
// console.log('他爸爸狠狠的打他屁股了~~~');
// } else if (score >= 60 && score < 80) {
// console.log('给500块~~~~');
// } else if (score >= 80 && score < 100) {
// console.log('给1000块~~~~');
// } else {
// console.log('给10000块~~~~');
// }
// console.log('裙姐睡着了~~~');
// var usrName = '小苍苍';
// if(usrName == '小苍苍'){
// console.log('来,我们一起学习代码编程~~!');
// }else if(usrName == '小泽泽'){
// console.log('来,我们一去学习打篮球~~~!');
// }else if(usrName == '裙姐姐'){
// console.log('来,我们一起去非洲探亲~~~~!');
// }else{
// console.log('对不起,我不认识你,妈妈不让我和陌生人说话~~!');
// }
//2.4 嵌套if
var score = 59;
console.log('裙姐考试回来了~~');
console.log('他爸爸问他打了多少分');
console.log('裙姐打了 ' + score + ' 分');
if (score < 60) {
console.log('他爸爸狠狠的打他屁股了~~~');
//嵌套 if~~~
if(score < 30){
console.log('他妈妈狠狠的打了他爸爸屁股~~~');
if(score <10){
console.log('不知道还会发生什么可怕的事情~~!');
}
}
} else if (score >= 60 && score < 80) {
console.log('给500块~~~~');
} else if (score >= 80 && score < 100) {
console.log('给1000块~~~~');
} else {
console.log('给10000块~~~~');
}
console.log('裙姐睡着了~~~');
//3.循环结构语句
07显示类型
//1. 什么是类型转换? -- 将 一种类型的数据 转成 另外一种 类型
//1.1 转数值 parseInt parseFloat Number
//a.parseInt 转 整型数值
// a1.如果 遇到 小数字符串,会将 小数点和小数部分 去掉,只转换 整数部分
// a2.如果 转换的 数据 不是一个 数值字符串,就会转换失败,返回 NaN
// a3.如果 遇到 非数值,会自动停止转换,只转换非数值 前面的 数据
// a4.如果 最前面是 空格,会 自动 忽略空格,转换后面的数据
// a5.如果 中间遇到空格,会自动停止转换,只转换 空格 前面的 数据
var num = parseInt('11'); // '11' -> 11
console.log(typeof num); // number
var num = parseInt('11.1'); //'11.1' -> 11
console.log(num);
var num = parseInt('aaaa'); // NaN
console.log(num);
var num = parseInt('12a34'); // 12
console.log(num);
var num = parseInt('a12'); // NaN
console.log(num);
var num = parseInt(' 12'); //12
console.log(num);
var num = parseInt(' 12 34'); //12
console.log(num);
//案例:将 '100px' -> '110px' --------------------------------------
var divWidth = '100px';
divWidth = parseInt(divWidth); //divWidth = 100
divWidth += 10;// divWidth = 100 + 10;
divWidth += 'px';// 110 + 'px' -> '110px'
console.log('divWidth=' + divWidth);
//b.parseFloat 转小数
var num = parseInt('11.1'); // 11
var num = parseFloat('11.1'); // 11.1
console.log(num);
var num = parseFloat('aaaa'); // NaN
console.log(num);
var num = parseFloat('12a34'); // 12
console.log(num);
var num = parseFloat('a12'); // NaN
console.log(num);
var num = parseFloat(' 12'); //12
console.log(num);
//c.Number 转 任何数值
var num = Number('111000');
console.log(num);
var num = Number('111000.777');
console.log(num);
var num = Number('111000aaa111'); // NaN
console.log(num);
//1.2 转字符串
// 数据.toString() String(x)
//a. 数据.toString() 可以 用来 将 数据 转成 字符串
var num = 11;
console.log(num.toString()); // 11 -> '11'
//注意:数值直接量 不能 通过 .来调用 toString()方法,因为 会被当做 小数点
// console.log(11.toString());
console.log(true.toString());
//b.String(x) 可以用来 将 没有 toString()方法的 数据 转成 字符串,比如:undefined 和 null
// console.log(undefined.toString()); //报错:Cannot read property 'toString' of undefined
var str = String(undefined);
console.log(str);
var str = String(null);
console.log(str);
//1.3 转布尔值
// Boolean(x) 用来 将 数据 转成 true 或者 false
// 会转成 false 的有 8 种: 0 , -0,NaN ,'',undefined , null , false , document.all
// 其他的全都转成 true
var isOk = Boolean('false');//true
console.log(isOk);
var isOk = Boolean('小白白'); //true
console.log(isOk);
var isOk = Boolean(Infinity); //true
console.log(isOk);
var isOk = Boolean('\n'); //true
console.log(isOk);