Javascript 高级编程 3章19页 【基本语法】

179 阅读2分钟

基本语法

  • ECMAScript,这门“伪语言”,描述了javascript这些基本概念
  • ECMAScript中的一切(变量,函数名,操作符)都区分大小写

标识符

  • 变量名函数名属性名函数的参数
  • 驼峰格式:第一个字母小写,其他单词首字母大写
  • 可以包括,字母,数字,下划线,美元符号
  • 第一个字母,不能是数字
  • 不能把关键字,保留字,用作标识符

注释

  • 第二行的星号不是必须,有的话,可以增强注释的可读性
// 为单行注释

/* 
 *为块级注释
 */ 

严格模式

"use strict";
  • ECMAScript 5 引入
  • 严格模式下:
    • ECMAScript 3中的一些不确定行为将得到处理
    • 对某些不安全的操作会抛出错误
  • 启用严格模式:
    • 整个脚本:顶部添加
    • 某个方法:方法内第一行添加

语句

  • 推荐,以分号结尾
  • 也可以不以分号结尾,如此,就有解释器自行推断语句的结尾

代码块

  • {}
  • 推荐,即使即使只有一行,也用代码块

关键字

  • 有一定用途
  • 不能用作标识符,如果不识趣地用了:
    • 实现了ECMAScript 3的javascript引擎,会抛出Identifier Expected错误
    • 实现了ECMAScript 5的javascript引擎,也不会允许
  • 有时可以用作对象的属性名,但极不推荐。
    • ECMAScript 5允许的
      • 非严格模式
      • 严格模式,但不对该关键字设限制 | ECMAScript 的全部关键字: | (表示ECMAScript 5新增) | | | | --- | --- |--- |--- | | break | do | instanceof | typeof | | case | else | new | var | | catch | finally | return | void | | continue | for | switch | while | | debugger | function | this | with | | default | if | throw | | | delete | in | try | |

保留字

  • 暂时还没有用途
  • 不能用作标识符,如果不识趣地用了:
    • 会不会,抛出Identifier Expected错误,这取决于引擎 | ECMAScript 3 定义的保留字: | | | | | --- | --- |--- |--- | | abstract | enum | int | short | | boolean | export | interface | static | | byte | extends | long | super | | char | final | native | synchronized | | class | float | package | throws | | const | goto | private | transient | | debugger | implements | protected | volatile | | double | import | public | |
ECMAScript 5 新增的保留字:
letyield

变量

  • ECMAScript的变量用var关键字来定义是松散类型的
    • 可以保存任何类型
    • 随时可以切换数据类型但不推荐
//此时保存一个特殊值,undefined
var message;

//此时保存一个字符串值 "hi"
var message = "hi";

//可以在一条语句中定义多个变量,换行和缩进不是必须的
var message = "hi",
    found = false,
    age = 29;
    
//严格模式下,eval和arguments不能作为变量名
  • 变量的作用域:
    • 在函数中,定义var变量
      • 那么函数退出后就会被销毁。
      • 这是局部变量
    • 在函数中,定义变量,但不加var
      • 那么函数退出后,这个变量依然可用。
      • 这是全局变量
      • 不推荐省略var来定义全局变量
function test() {
    var message = "hi"; //局部变量
}
test();
alert(message); //错误!
function test() {
    message = "hi"; //全局变量
}
test(); //调用过一次test(),message变量就有了定义,就可以在函数外被访问
alert(message); //"hi"