语句与表达式
什么是表达式?
表达式(
expression
)是JavaScript
中的一个短语,JavaScript
解释器会将其计算(evaluate
)出一个结果,程序中的常量是最简单的一类表达式。变量名也是一种简单的表达式,它的值就是赋值给变量的值。
表达式有简单的复杂的,它的出现常常会伴随着一个值的查询或者环境的修改,来个栗子 ↓
123
"Hello World"
/pattern/
[]
function abc(x){return x}
...
这里面有 原始表达式 、 初始化表达式 等等,写法很多,但他们都有一个共同点,就是浏览器读到这行代码的时候,都需要计算(查询)这个短语表达的意思,并返回计算结果。
什么是语句?
语句(
statement
)是JavaScript
中的整句或命令,正如英文是用句号作结尾来分割语句,JavaScript
就是以分号结束,表达式计算出一个值,但语句用来执行以使某件事发生;“使某件事发生” 的一方法是计算带有副作用的表达式
语句的使用会触发某件事的发生,例如赋值和函数的调用等等,来点栗子 ↓
abc++;
abc('123');
var x = 2;
var f = function(x){ return }
其实表达式和语句在某些情况下并不容易区分明显,表达式一般都会有值,语句可能有也可能没有
标识符的规则
标识符就是变量或者函数的名字,标识符规则就是他们的命名规则
-
命名规则:必须以字母、下划线、或美元符开始,后续的字符可以是字母、数字、下划线或美元符
-
注意:数字是不能作为首字符出现,以便
JS
可以清一分开标识符和数字
// 合法的表示符,栗子
i
Hello_World
h123
_hello
$hello
if...else
语句
判断一个条件,来决定是否进入一个分支,如果不成立,进入另一个分支,举个栗子
var a = 123;
if( a === 123 ){ // 三个等号是全等的意思,要求等号两边的,值,类型都需要一致,推荐使用全等来进行判断
console.log('Hello World!');
}else{
console.log("你好,世界!")
}
如果我们只需要在判断之后进行简单的修改,if
后面的大括号 {}
可以省略
var a = 123;
if( a === 123 ) console.log('Hello World!');
if( a === 123 )
console.log('Hello World!');
需要注意的是,如果不写 {}
,JS
只会判断if
语句下一行的第一个语句
var a = 123;
if(a===12)
console.log('a等于12');
console.log('a等于123'); // 浏览器会打印这句话。因为他不会被浏览器计算到 if 内,所以无论 if 成不成立,它都会执行
// 浏览器眼中是这样的
if(a===123){
console.log('a等于12');
}
console.log('a等于123');
其他的判断语句还有
if...else if...
switch...case
while
循环
while
循环与 for
循环的功能是一样的,不过好像 for
循环更受欢迎 (●'◡'●)
var i = 0;
while( i < 10 ){
console.log(i);
i++;
}
因为 while
的循环三要素是分开写的,所以比较容易出错,注意 while
后面的循环开关,如果判断条件不小心写错,就会变成一个死循环( ̄、 ̄)
它兄弟 do...while
var text = ""
var i = 0;
do {
text += "<br>数字为 " + i;
i++;
}
while (i < 5) {
document.getElementById("demo").innerHTML = text;
}
do
中的代码至少会执行一次,然后再判断 while
中的条件,如果条件为真,就继续这个循环
break continue
语句
break
:跳出当前循环continue
:跳出本次循环,进入下一次循环
// break
for( var i=0;i<10;i++ ){
if(i===5){ break };
console.log(i);
}
// 打印:0,1,2,3,4
// continue
for( var i=0;i<10;i++ ){
if(i===5){ continue };
console.log(i);
}
// 打印:0,1,2,3,4,6,7,8,9
注意 break
只能跳出一层循环
for( var i=0;i<5;i++ ){
for( var j=0;j<5;j++ ){
if(i===3){ break };
console.log(j);
}
console.log(i);
}
label
label
其实就是代码块
{
foo: 1;
}
浏览器会打印 {foo:1}
,但它一个语句 1