JavaScript 基本语法笔记

471 阅读3分钟

语句与表达式

什么是表达式?

表达式(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