JavaScript核心之语法

一、基础语法

1、字符区分大小写

在JavaScript中所有的关键字、变量、函数、对象等都是严格区分大小写的。

2、注释

JavaScript支持两种注释的方式,分别为单行注释和多行注释:

  • 单行注释
<script>
    //这是单行注释
    var a = 2;

</script>

在“//”行尾的内容都会被注释掉。

  • 多行注释
    /*
     这是多行注释
     console.log('hello')
   */

在“/*”与“*/”之间的内容都会被注释掉,注意的是这种注释不能有嵌套的注释。

3、分号

JavaScript语言使用分号将语句隔开。缺少分号,一条语句就成为下一条语句的开始,当然如果语句独占一行是可以省略分号的:

   //x=1后的分号不能省略
   var x=1;var y=2;
   
   //x=1后的分号可以省略
   var x=1
   var y=2

4、标识符

  在JavaScript中,标识符用来对变量或者函数进行命名。标识符必须以字母、下划线(_)、美元符($)开始,后面的字母可以是字母、数字下划线或者美元符,其中数字是不允许作为首字母出现的。

   // 合法的标识符实例
   var a = 2
   var _b = 3
   var $ab = 4

其中关键字与保留字均不可以作为标识符出现,但标识符可以包含这些。

二、关键字

break case catch continue debugger
default delete do else finally
for function if in typeof
var void while with instanceof
new return switch this throw
try        

三、保留字

JavaScript保留了一些在当前版本没有使用的关键字,但是在以后的版本可能会使用到这些关键字:

boolean byte char class const
double enum export extends final
float goto implements import int
interface long native package private
protected public short static super
synchronized throws transient volatile  

四、变量

(一)变量命名

变量是用标识符进行命名,也就是:

  • 变量名可以使用字母、数字、下划线、美元符

  • 变量名只能以字母、下划线、美元符开头

  • 变量名不能使用关键字和保留字

(二)变量声明

在JavaScript中,使用一个变量前应先对其进行声明,变量是使用var来进行声明的。

   //单个声明
   var i; 
   var j;
//批量声明 var i,j;
//变量声明与赋值同时进行 var i=1,j=2;

注意:

  • 如果声明了变量,但是并没有给它赋值,那么它的初始值是undefined
  • 如果读取一个没有声明的变量会报错
  • 如果重复声明带有初始化器,这相当于赋值
  • 如果给一个未声明的变量赋值,这相当于全局创建了这个变量

(三)变量作用域与声明提前

1、变量作用域

   变量作用域是程序源代码中变量的作用区域。它分为全局作用域与局部作用域,全局作用域是全局变量作用的区域,在JavaScript代码中任何地方都是有定义的;局部作用域是局部变量作用的区域,在函数体内声明的变量或者函数参数变量,也只是在函数体内有定义。

  局部变量可以覆盖全局变量的。在函数体内,局部变量的优先级高于同名的全局变量。

   var variable = 'hello';
    function checkscope() {
        var variable = 'world'
        return variable
    }
    var result = checkscope()
    console.log(result) //world

  JavaScript使用的是函数作用域,也就是说如果函数体内有if、for等语句{}中声明的变量在整个函数体内都是可见的。

  function scope(){
      var x = 10;
      if (x>1){
          var y =2
      }
      console.log(y) //在整个函数体内都是可见的,尽管它在代码块中
  }
  
  scope()

2、声明提前

变量在函数体内始终是可见的,如果是下面这种情形的话:

  function scope(){
      console.log(a) //undefined
        var a = 10;
      console.log(a) //10
  }
  
  scope()

a变量是在函数体内,所以它都是可见的,但是只有执行到var语句时候才会被真正的赋值。这与下面的情形是一样的:

    function scope() {

        var a;
        console.log(a); //undefined
        a = 10;
        console.log(a) //10
    }

    scope()
原文地址:https://www.cnblogs.com/shenjianping/p/13849853.html