web前端从零开始系列-04-Javascript基本语法

JavaScript 核心语法,覆盖了 ES5 和 DOM 规范的所有内容。

javascript基本语法

语句

javascript 执行顺序是自上而下 一行一行去执行,其中一行就是一个语句

语句以分号结尾 多个分号可以一行

var a = 1 + 3 ; var b = 'abc';

分号前面可以没有任何内容,JavaScript 引擎将其视为空语句。

;;;1 + 3;'abc';

表达式不需要分号结尾;一旦添加会产生,无任何意义语句

1 + 3;'abc';
变量

变量就是为“值”起名,然后引用这个名字,就等同于引用这个值。

var a = 1;   
实际就是
var a;
a = 1;

undefined是一个特殊的值,表示“无定义”。 只是声明变量未赋值易造成undefinded

var a;
a // undefined

赋值等同情况 建议使用 var表达清晰 否则易不知情况下创建过多全局变量

var a = 1;
// 基本等同
a = 1;

同一条var命令中声明多个变量。

var a, b;

JavaScript 是一种动态类型语言,也就是说,变量的类型没有限制,变量可以随时更改类型。

var a = 1;
a = 'hello';

如果已经声明的变量 第二次声明无效,第二次若赋值将会覆盖

var x = 1;  
var x;
x // 1

var x = 1;
var x = 2;
// 等同于
var x = 1;
var x;
x = 2;
变量提升

JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。 变量提升

标识符

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。

JavaScript 语言的标识符对大小写敏感,所以a和A是两个不同的标识符。

命名规则:

  • 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
  • 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。

合法的标识符。

arg0
_tmp
$elem
π

非法标识符

1a  // 第一个字符不能是数字
23  // 同上
***  // 标识符不能包含星号
a+b  // 标识符不能包含加号
-d  // 标识符不能包含减号或连词线

中文是合法的标识符,可以用作变量名。

var 临时变量 = 1;

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。
注释

源码中被 JavaScript 引擎忽略的部分就叫做注释

JavaScript 提供两种注释的写法:一种是单行注释,用//起头;另一种是多行注释,放在//之间。

也被视为合法的单行注释。但是 -->只有在行首,才会被当成单行注释,否则会当作正常的运算。
正确
x = 1; <!-- x = 2;
--> x = 3;

错误
function countdown(n) {
  while (n --> 0) console.log(n);
}
countdown(3)
区块

JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。

对于var命令来说,JavaScript 的区块不构成单独的作用域(scope),既可以全局使用。

条件语句
if else

if后面的表达式之中,不要混淆以下

  • 赋值表达式(=)赋值表达式不具有比较作用。
  • 严格相等运算符(===
  • 相等运算符(==)

常量不能被赋值

if (x = 2) { // 不报错
if (2 = x) { // 报错

else代码块总是与离自己最近的那个if语句配对。

switch

严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

var x = 1;

switch (x) {
  case true:
    console.log('x 发生类型转换');
    break;
  default:
    console.log('x 没有发生类型转换');
}
// x 没有发生类型转换
三元运算符
(条件) ? 表达式1 : 表达式2
条件为true显示表达式1 false 显示表达式2
循环语句
while 循环

无限循环 ``javascript while (true) { console.log('Hello, world'); }

###### do...while 循环
注意while语句后面的分号注意不要省略
```javascript
var x = 3;
var i = 0;

do {
  console.log(i);
  i++;
} while(i < x);
for 循环

无限循环

for ( ; ; ){
  console.log('Hello World');
}
break 语句和 continue 语句

只会执行10次循环,一旦i等于10,就会跳出循环。

var i = 0;

while(i < 100) {
  console.log('i 当前为:' + i);
  i++;
  if (i === 10) break;
}

只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。

var i = 0;

while (i < 100){
  i++;
  if (i % 2 === 0) continue;
  console.log('i 当前为:' + i);
}

如果存在多重循环,不带参数的break语句和continue语句都只针对最内层循环。

标签(label)

JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置,标签的格式如下。

label:
  语句

可用于跳出代码块

foo: {
  console.log(1);
  break foo;
  console.log('本行不会输出');
}
console.log(2);

本文学习整理于 阮一峰javascript 入门教程

彼特城博客
请先登录后发表评论
  • latest comments
  • 总共0条评论