一、基本语法
- 语句和表达式 (statement & expression)
- 概念:
- 概念:
语句:是为了完成某种任务而进行的操作,如:var a = 1+1;。
表达式:是为了得到返回值的计算式,如:1+1。
JavaScript的执行单位是行,代码是一行一行的执行,一般情况下一行就是一个语句。
* 例子:
var a = 1 + 1; // 语句,为了进行某种操作,不需要返回值,分号结尾。
1+1 // 表达式,为了得到返回值,不需要分号。
;;; // 三个空语句
1+1; 'abc'; // 表达式后加分号,无意义的语句
我们首先使用关键字var声明一个变量,之后执行等号右边的表达式并将表达式的结果赋值给变量。
- 变量(variable)
- 概念: 变量是对’值’的引用,使用变量等于引用一个值,每个变量都有一个变量名。
2.1. 变量声明
* 例子:
var a = 1; // 声明变量a,赋值为1。
var a;
a = 1; // 声明和赋值分开
var a; // 只声明不赋值,结果为undefined
a = 1; // 忘记var,变量提升为全局变量,可以使用delete删除,不推荐。
a // ReferenceError: a is not defined
var a, b; // 声明多个变量,推荐写法。
var a = 1;
var a;
a // 1 重新声明变量无效
var a = 1;
var a = 2;
a // 2 重新声明赋值,覆盖前一个
var是变量声明的关键字,作用是通知js引擎,要创建一个变量a,使用var声明一个变量a,之后将值1赋值给变量a,之后我们就可以使用变量a来引用值1。
2.2. 变量的提升
* 概念: 代码中所有的变量声明语句都会被提升到头部。
* 原因:JavaScript引擎是工作方式是首先解析代码,获取所有被声明的变量,之后才一行一行的运行代码。
例子:
console.log(a); // undefined 变量声明提升,赋值不提升,所以结果为undefined
var a = 1;
//相当于
var a;
console.log(a); // undefined
a = 1;
console.log(a); // ReferenceError: a is not defined 变量提升只对使用var声明的变量有效
a = 1;
- 标识符(identifier)
- 概念:用来识别具体对象的一个名称,常见有变量名和函数名。
- 规则:
[Unicode字母 | _ | $] + [Unicode字母| 0-9 | _ | $]{0-~}
例子:
// 合法
a123
_123
$123
π
var 临时变量 = 1;
//不合法
123 // 第一个字符不能是数字
1abc // 同上
*** // 标识符不能包含星号
a+b // 标识符不能包含加号
-d // 标识符不能包含减号或连词线
JavaScript有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
另外,还有三个词虽然不是保留字,但是因为具有特别含义,也不应该用作标识符:Infinity、NaN、undefined。
- 注释
// 这是单行注释
/*
这是
多行
注释
*/
- 区块
- 概念:JavaScript中使用{}将多个相关的语句组合在一起。
- 作用: 构建其他更加复杂的语法结构,比如for if while function等
{
var a = 1;
}
a // 1
{
let a = 1;
}
a // ReferenceError: a is not defined
使用var声明变量区块不存在局部作用域,使用let声明变量区块中存在局部作用域
- 条件语句
// if 语句
if (expression) {
statement;
}
// if else 语句
if (expression) {
// then
} else {
// else
}
// switch 语句
switch (expression){
case value:
break;
default:
break;
}
// 三元运算符
(condition) ? expr1 : expr2s;
- 循环语句
// while 循环
while (expression) {
statement
}
var i = 5;
while (i--){
console.log(i)
}
// for 循环
for (initialize; test; increment) {
statement
}
for (var i = 0; i < 5; i++) {
console.log(i)
}
// 可省略,形成一个无限打印的循环
for (; ;) {
console.log('hello world'); // hello world
}
// do while 循环
do {
statement
} while (expression);
// break语句 跳出循环
var i = 10;
while (i--){
console.log(i)
if(i === 5) break;
}
// 打印所有奇数
var i = 0;
while (i < 100){
i++;
if (i%2 === 0) continue;
console.log('i当前为:' + i);
}