JS基本语法

目录:
  1. 语句
  2. 变量声明及提升
  3. 标识符
  4. 注释
  5. 区块
一:语句

js程序的执行顺序是从上到下执行。

js程序执行单位为行,一般情况下,一行就是一个语句,但语句可以以分号结尾,一个分号标识一个语句结束,故可以多个语句写在一行内。

var a = 1 + 3; //这是一个标准的JS赋值语句,先声明变量,再赋值。
var a = 1 + 3; var b = 'abc';//因为分号的存在,多个语句可写在一行内。
;;;//如果仅仅写分号,代表三个空的JS语句

有些时候写代码的时候并没有在语句的后面添加分号,是因为浏览器或者编辑器也会默认一行为一个JS语句,默认帮我们加上了分号。

二:变量声明及提升

(1):变量及其声明

变量是对"值"的引用,使用变量等同于引用一个值,每一个变量都有一个变量名。

var a = 1;

在上面的代码中,先是声明变量a,然后在a与数值1之间建立引用关系,完成了将数值1赋值给变量a,以后引用变量a就会得到数值1。其中最前面的var,是变量声明命令,告诉浏览器要创建变量a,而a则是变量名,等号表示引用关系。

变量的声明与赋值,在实际上是分开的两个步骤,等同于下面的代码:

var a; // 声明变量,此时变量a是undefined,相当于只声明未赋值
a = 1; // 完成赋值,此时变量a与数值1完成引用关系,a就代表数值1

变量如果没有声明就直接使用,回报变量未定义的错。

JS之所以是一种动态类型的语言,是因为变量的类型没有限制,可以给任何变量赋予任何类型的值。

var a = 1; // 给变量a赋值为数值类型的值
a = 'hello'; // 给变量a赋值一个字符串的值。
var a;//变量的二次声明,二次声明是无效的。
var a = 2; // 变量的二次声明并赋值,会讲第一次赋值给覆盖掉

(2):变量声明提升

js引擎的工作方式是:先解析代码,获取所有的被声明的变量,然后再一行一行的运行。这样造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,称之为变量提升。

在JS引擎解析代码的过程中,会将函数的JS区块也提升,不过是将其放到内存的堆中,所以写在后面的函数,同样可以在前面直接调用。


变量声明提升只对var 声明的变量有提升效果,对于ES6中let和const等声明的变量无提升效果,这一点将会在ES6中详细说明。

console.log(a); // undefined,并不会报变量未声明的错,原因就在于var a 这条声明语句会提前
var a = 1
console.log(a); // 1

上面的代码等同于:

var a 
console.log(a) // undefined
a = 1
console.log(a) // 1

所以变量声明提升就是一行语句中的声明赋值回分开进行,将声明语句提升到前面,赋值语句则在原地,当在前面用到该变量是,并不会报未声明的错误。

三:标识符

标识符是用来识别具体对象的名称,例如变量名称,函数名称。JS对标识符大小写敏感,所以a和A是两个不同的标识符。

标识符的命名规则:

  1. 第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母)、美元符号"$“和下划线”_"
  2. 第二个字母及后面的字符,除了Unicode字母,还可以用数字0-9.
arg0、_tmp、$elem、π //  合法标识符
1a、23、****、a+b、-d // 不合法字母,第一个标识符不能是数字,标识符也不能包含星号,加好,减号或者连线词 
var 中文变量 = 1; // 合法标识符,中文名称可用作标识符。

JS还有一些保留字,不能用作标识符,如下:

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

四:注释

源码中被JS引擎忽略的部分就叫做注释,它的作用是对代码进行解释。JS提供两种注释:一种是单行注释,用//起头;另一种是多行注释,放在/* 和 */之间

// 单行注释
 
/*
多
行
注
释
*/

此外,JS在历史上为兼容HTML代码的注释,还有一种单行注释:

x = 1; <!-- x=2;
--> x =3;  //只会执行x=1,其中x=2和x=3都被注释掉了,
// 需要注意的是"-->"只有在行首,才会被当成单行注释,否则会被当"-- >"两个运算符。

function countdown(n) {
  while (n --> 0) console.log(n);
}
countdown(3)
// 2
// 1
// 0

五:区块

JS使用大括号,将多个相关的语句组合在一起,称为"区块"(block).

{
    var a = 1
}

不过,在js中,区块不构成单独的作用域,区块内的变量与区块外的变量,属于同一个作用域。所以在JS中,单独使用区块的意义不大。区块往往用来构成其他更复杂的语法结构,比如forifwhilefunction等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值