一、规范
js是以分号区分语句的,不写也可以,但是要规范,加了就习惯加上,不加就全都不加,有些可以不用加(if switch for function)
//符号两边加空格
var a = a + b
二、错误
1. 语法错误
所有语句都不会执行
2. 通用错误
1.错误语句之前的语句会执行,之后的不会执行
2. 不同脚本块之间相互独立错误不会相互影响
三、运算符
1. 运算优先级
2. + 运算符
任何数据类型+字符串=字符串
var a = 1 + "str" // a = 1str
3. *、/运算符
// *、/ 数学运算
var a = 5,
b = 2,
c,
d;
d = a * b; // 10
d = a * NaN // NaN
d = a * 'str' // NaN
c = a / b; // 2.5
c = 0 / 0; // NaN
c = 'a' / 'b'; // NaN
c = NaN / 5; // NaN
c = NaN / NaN; // NaN
c = 5 / NaN; // NaN
c = 1 / 0; // Infinity -> Number数据类型
c = -1 / 0; // -Infinity -> Number数据类型
4. 交换两个数的方法
//交换a,b的值
var a = 1,
b = 2;
var c = a;
var a = b;
var b = c;
//不加第三个变量
var a = a + b;
var b = a - b;
var a = a - b;
5. ++、--(自增、自减)
++ (--)将其操作数加1(减1)并返回—个值。
如使用后置自增((自减),操作符在操作数后x++(x--),操作数将在自增前返回。
如使用前置自增(自减),操作符在操作数后++X(--x),操作数将先自增后返回。
var a = 1;
console.log(a++); // 1
console.log(a); // 2
var b = 2;
console.log(++b); // 3
console.log(b); // 3
var c = 3;
console.log(c--); // 3
console.log(c); // 2
var d = 4;
console.log(--d); // 3
console.log(d); // 3
进阶练习
var a = 5,
b;
/**
* 1. b = a + 1
* 2. a++ a -> 6
*/
b = a++ + 1;
console.log(b, a); // 6 6
//-------------------------------------------------------------------------------
/**
* 1. ++a a -> 6
* 2. b = a + 1;
*/
b = ++a + 1;
console.log(b, a); // 7 6
//--------------------------------------------------------------------------------
/**
* 1. a-- a -> 5
* 2. 5 + --a a -> 4
* 2. --a a -> 3
* 3. b = 5 + 3
*/
b = a-- + --a;
console.log(b, a); // 8 3
//------------------------------------------------------------------------------
/**
* 1.--a a -> 4
* 2. 4 + --a
* 3. --a a -> 3
* 4. b = 4 + 3
*/
b = --a + --a;
console.log(b, a); // 7 3
//-----------------------------------------------------------------------------
/**
* 1. --a a -> 4
* 2. 4 + a++
* 3. b = 4 + 4
* 4. a++ a -> 5
*/
b = --a + a++;
console.log(b, a); // 8 5
6. > < >= <= == === != !==(比较运算符)
返回值为bool值
如果操作数都是数值,则执行数值比较。
如果操作数都是字符串,则逐个比较字符串中对应字符的编码。
如果有任—操作数是数值,则将另一个操作数转换为数值,执行数值比较。
如果有任一操作数是布尔值,则将其转换为数值再执行比较。
相等不看数据类型。全等需要数据类型相等
NaN与包括自己在内的任何东西都不相等
// 1. 两个操作数都是number类型
var bool = 1 > 10; // false
var bool = 20 < 100; // true
var bool = 10 === 10; // true
var bool = 10 == 10; // true
// 2. 两个操作数都是string类型
var bool = 'a' > 'b'; // false a对应的ASCII码 < b对应的ASCII码
var bool = 'abc' > 'aac'; // true 按顺序逐个比较字符的ASCII码
// 3. 任一操作数是number类型
var bool = 1 == '1'; // true str -> Number(str)
var bool = 1 !== '1'; // true 全等比较时,不转换操作数,值和数据类型都相同才返回true
// 4. 任一操作数是boolean类型
var bool = true > 0; // true boolean -> Number(true) -> 1
var bool = false == 0; // true boolean -> Number(false) -> 0
var bool = true > '12'; // false boolean -> Number(true) -> 1 str -> Number('12') -> 12
// NaN与包括自己在内任何东西都不相等
var bool = NaN == NaN; // false
四、判断分支
1. if else
// 查询成绩等级
var score = 63;
if (score >= 90) {
console.log('您的成绩等级为A');
}
if (score >= 80 && score < 90) {
console.log('您的成绩等级为B');
}
if (score >= 70 && score < 80) {
console.log('您的成绩等级为C');
}
if (score >= 60 && score < 70) {
console.log('您的成绩等级为D');
}
if (score < 60) {
console.log('您的成绩不及格');
}
if (score >= 90) {
console.log('您的成绩等级为A');
} else if (score >= 80 && score < 90) {
console.log('您的成绩等级为B');
} else if (score >= 70 && score < 80) {
console.log('您的成绩等级为C');
} else if (score >= 60 && score < 70) {
console.log('您的成绩等级为D');
} else if (score >=0 && score < 60) {
console.log('您的成绩不及格');
} else {
console.log('您的成绩出现异常');
}
2. switch条件语句
var city = window.prompt('请输入您所在的地区');
switch (city) {
case '北京':
console.log('15K');
break; // 中止当前循环
case '上海':
console.log('13K');
break;
case '深圳':
console.log('12K');
break;
case '广州':
console.log('11K');
break;
default:
console.log('9K');
}
switch (true) {
case score >= 90 && score <= 100:
console.log('您的成绩等级为A');
break;
case score >= 80 && score < 90:
console.log('您的成绩等级为B');
break;
case score >= 70 && score < 80:
console.log('您的成绩等级为C');
break;
case score >= 60 && score < 70:
console.log('您的成绩等级为D');
break;
case score >= 0 && score < 60:
console.log('您的成绩不及格');
break;
default:
console.log('您的成绩出现异常');
}
五、&& || !逻辑运算
undefind、null、NaN、""、0、false 都是假,其余的都为真
1. &&
遇到真就往后走,遇到假就返回当前的值
true && 1; // 1
'123' && false; // false
undefined && 'str'; // undefined
'str' && NaN; // NaN
'' && null; // ''
0 && 5; // 0
2. ||
遇到假就往后走,遇到真就返回当前的值
true || 1; // true
'123' || false; // '123'
undefined || 'str'; // 'str'
'str' || NaN; // 'str'
'' || null; // null
0 || 5; // 5
3. !
取反
var a = !1; //true
六、注释
1.单行注释
//单行注释
2. 块注释
/* 这是第一行
* 中间的每一行最好加上*,这样更加规范,看起来也更加舒服
*
*/
七、小练习
输入一个星期一至星期日任意一天,然后选择上午下午,打印出那个时段的计划,比如说我星期一下午去喝茶了,然后就打印出来
第一种方法
var day = window.prompt('请填写星期几');
var time = window.prompt('选择上午或下午');
if(time = '上午'){
switch(day){
case '星期一':
console.log('去喝茶');
break;
case '星期二':
console.log('去喝茶');
break;
case '星期三':
console.log('去喝茶');
break;
case '星期四':
console.log('去喝茶');
break;
case '星期五':
console.log('去喝茶');
break;
case '星期六':
console.log('去喝茶');
break;
case '星期天':
console.log('去喝茶');
break;
default:
console.log("请输入星期一至星期日");
}
}
else if(time = '下午'){
switch(day){
case '星期一':
console.log('去喝茶');
break;
case '星期二':
console.log('去喝茶');
break;
case '星期三':
console.log('去喝茶');
break;
case '星期四':
console.log('去喝茶');
break;
case '星期五':
console.log('去喝茶');
break;
case '星期六':
console.log('去喝茶');
break;
case '星期天':
console.log('去喝茶');
break;
default:
console.log("请输入星期一至星期日");
}
}
第二种
var day = window.prompt('请填写星期几');
var time = window.prompt('选择上午或下午');
var days = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'];
var times = ['上午', '下午'];
var plans = ['计划1', '计划2', '计划3', '计划4',
'计划5', '计划6', '计划7', '计划8',
'计划9', '计划10', '计划11', '计划12',
'计划13', '计划14'];
switch (day) {
case days[0]:
if (time == times[0]) {
console.log(days[0] + times[0] + plans[0]);
} else if (time == times[1]) {
console.log(days[0] + times[1] + plans[1]);
} else {
console.log('输入格式错误');
}
break;
case days[1]:
if (time == times[0]) {
console.log(days[1] + times[0] + plans[2]);
} else if (time == times[1]) {
console.log(days[1] + times[1] + plans[3]);
} else {
console.log('输入格式错误');
}
break;
case days[2]:
if (time == times[0]) {
console.log(days[2] + times[0] + plans[4]);
} else if (time == times[1]) {
console.log(days[2] + times[1] + plans[5]);
} else {
console.log('输入格式错误');
}
break;
case days[3]:
if (time == times[0]) {
console.log(days[3] + times[0] + plans[6]);
} else if (time == times[1]) {
console.log(days[3] + times[1] + plans[7]);
} else {
console.log('输入格式错误');
}
break;
case days[4]:
if (time == times[0]) {
console.log(days[4] + times[0] + plans[8]);
} else if (time == times[1]) {
console.log(days[4] + times[1] + plans[9]);
} else {
console.log('输入格式错误');
}
break;
case days[5]:
if (time == times[0]) {
console.log(days[5] + times[0] + plans[10]);
} else if (time == times[1]) {
console.log(days[5] + times[1] + plans[11]);
} else {
console.log('输入格式错误');
}
break;
case days[6]:
if (time == times[0]) {
console.log(days[6] + times[0] + plans[12]);
} else if (time == times[1]) {
console.log(days[6] + times[1] + plans[13]);
} else {
console.log('输入格式错误');
}
break;
default:
console.log('输入格式错误');
}