表达式和语句
-
表达式
- 1+2这个表达式的值为3
- add(1,2)这个表达式的值为函数的返回值(只有函数有返回值)
- console.log表达式的值为其本身
- console.log(3)该表达式的值为undefined
- 值 ≠ 返回值;函数的值为其返回值。
-
语句
var a=1这就是一个语句
-
注意点:大小写有区别:var A ≠ var a、object ≠ Object;只要不影响断句,空格和回车对函数无影响,只有return后面不能加回车,加了的话后面会自动写入'undefined' 。
-
表达式和语法的区别
- 表达式一般都有值,语句有时候有有时候冇
- 语句一般会改变环境(声明、赋值)
- 以上区别不绝对
标识符
-
规则:第一个字符,可以是Unicode 字母也可以是 $ 或 _ 或中文;后面的字符,除以上外还可以是数字。
-
变量名
var Φ = 2var $1 ='XXXX'var 你好 ='HI'var _ = 1(下划线最多×2)var 9$这种写法是不行的(Uncaught SyntaxError : Invalid unexpected token ),数字只能从第2位开始。
if else 语句
- 语法:
if (表达式) {语句1} else {语句2}
//举例
a=2
if (a=1){
console.log(a为'1')
}else{
console.log(a不为'1')
}
//a为1
- 这里结果为什么是'a为1',因为
=是赋值的意思,这里直接给a赋值为1,因此a≠2了。 - 若要打印出结果'a不为1',则使
a === 1。
//举例
a=2
if (a === 1){
console.log(a为'1')
}else{
console.log(a不为'1')
}
//a不为1
- 省略{}的语法写法
- if else特殊情况:语句1里嵌套
if else;语句2里嵌套if else
- if else特殊情况:语句1里嵌套
//举例1
if (a<100)
if (a<10)
console.log('a小于10')
//'a小于10'
if (a<100){
}else if (a>10000) {
console.log('a>10000')
} else{
}
//undefined
//else if是else{}和if{}省略了{}后合并在一起的写法,因此这里有2对if else
//举例2
a = 1
if (a === 2)
console.log('a');
console.log('a等于2')
//'a等于2'
//省略了{},实际上if(a === 2)只对其后面第一个语句有意义。
//两个语句用分号和逗号隔开意思完全不同,分号表示此句已经结束了,逗号表示此句未完。
- 推荐语法写法(最没有歧义的写法)
if (表达式) {
语句
}else if (表达式) {
语句
}else {
语句
}
- 次推荐语法写法
function fn(){
if (表达式){
return 表达式
}
if (表达式) {
return 表达式
}
return 表达式
}
- witch 语句 (if…else…升级版,易错语法),大部分时候省略break就会出错。
switch () {
case " ":
// …
break;
case " ":
// …
break;
default:
// …
}
- 问号/冒号/表达式:
表达式1? 表达式2: 表达式3,常用于简化if里只有1个语句 & else里只有1个语句的情况。
function max(a,b){
if (a>b) return a;
else return b;
}
//以上可写为
function max(a,b){
return a>b ? a:b
}
- && 短路逻辑:
A && B && C && D,取第一个假值或D,并不会取true/false
if (window.f1){
console.log('f1存在')
}
//以上可写为:
window.f1 && console.log('f1存在')
//'f1存在'
- || 短路逻辑:
A||B||C||D,取第一个真值或D,也不会取值true/false
a||b
//等同于
if (!a){
b
}else{}
//取真值表达式,a是真则取a;a不是真,才执行后面内容
a=a || 100
//等同于
if (a){
a=a
}else{
a=100
}
while 循环
-
语法:
while (表达式) {语句} -
判断表达式的真假
- 当表达式为真,执行语句,执行完再判断表达式的真假
- 当表达式为假,执行后面的语句
-
while无返回值
var i=0 //初始化
while(i<10){ //判断
console.log(i) //循环体
i = i+1 //增长
}
//举例:死循环代码
var a = 0.1
var (a !== 1){
console.log(a)
a = a + 0.1
}
//因为浮点数不精确,所以永远不会等于1
for 循环
-
for循环即是while循环的语法糖
-
语法
for(语句1;表达式2;语句3){
循环体
}
- 先执行语句1,然后判断表达式2:
- 如果为真:执行循环体,再执行语句3
- 如果为假,直接退出循环,执行后面语句
- 举例
for (let i=0;i<5:i++){
console.log(i)
}
// 0 1 2 3 4
// 执行完以上循环后,i的值最终值为'5',
for (var i=0;i<5:i++){
setTimeout(()=>{ [过一会执行]
console.log(i)
},0)
console.log(i)
}
//以上循环执行后,打印出5个'5',
var a = 1
function fn(){
console.log(a)
}
setTimeout(fn)
// 5
for(var i=0;i<5;i++){
}
setTimeout(()=>{console.log(i)})
// 5
for(var i = 0;i<5;i++){
setTimeout(()=>{console.log(i)})
}
// 5个'5'
for(let i = 0;i<5;i++){
setTimeout(()=>{console.log(i)})
}
// 0 1 2 3 4
- break和continue
- break退出这一整个循环,continue只是退出离它最近的这一循环
- 举例
for (var i=0;i<10;i++){
if(i%2 ===1){
break
}
}
// 1
for (var i=0;i<10;i++){
if(i%2 ===1){
continue
}else{
console.log(i)
}
}
// 0 2 4 6 8
//以上代码,使用continue跳过'i%2===1'这一循环,到下一步-即数值为偶数时直接输出。
label 语句
- 语法(foo-指代标识符)
foo: {
consoloe.log(1);
break foo;
console.log('此行不会输出');
}
console.log(2);
// 2
{
foo:1
}
//这表示 foo是一个label,它的内容为'1'