ECMAScript 语法、关键词和保留字、变量、 数据类型详细讲解

时间:2018-11-18
本文章向大家介绍ECMAScript关键字、保留字以及变量定义和使用详细,需要的朋友可以参考一下

3.1 语法

   ECMAScript 大量借鉴了其他语言的语法

    3.1.1 区分大小写  

           在ECMAScript中所有的东西都是区分大小写的 

    3.1.2  标识符命名标准

          标识符:就是 变量 属性 函数 或者 参数 的名字

  •  第一个字符必须是字母,下划线_ 或者 美元符 $
  •  其他字符可以是 字母,下划线 ,美元符,数字

       按照惯例 ECMA采用 驼峰大小写格式   : 第一个字母小写 其他每个单词 首字母大写 。

       不能把 关键词  保留字 作为标识符

    3.1.3   注释

//  单行注释  

/* 
  多
  行
  注
  释
*/

     3.1.4  严格模式

            ECMAScript5 引入了 严格模式 的概念 在顶部添加

"use static";

               严格模式下 JavaScript的执行结果会有很大不同

       3.1.5  语句

               ECMAScript 中 语句以一个 分号结尾 ,

var count = 1;
var mat = 2;

               可以把多条语句放在一个代码块里 , 代码块 以  {   开始   } 结尾

3.2 关键词和保留字

     关键词 : 有特定的用途 的关键字

breakelsenewvarcasefinallyreturnvoidcatchforswitchwhilecontinuefunctionthiswithdefaultifthrowdeleteintrydo 、 instranceof、  typeof

     保留字 :  尽管没有特定用途 但却是 将来可用到的 保留字

abstract 、 enum   、intshortboolean  、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

3.3 变量

        ECMASceipt 是 松散类型 的  (弱类型)就是 可以用来保存任何类型的数据。 定义变量时要使用 var 操作符, 后面要跟着 标识符

// 定义了  一个名为 message 的 变量
var message;

定义了一个名字为 message 的变量   该变量没有任何值,会被保存为一个特殊的值 undefined  。  可以在 声明变量的同时 设置 变量的 值 

var message = ”hello word“;

也可以再更改 message 的值   message = 100;     但不推荐这样做    更改已保存的类型  但 ECMAScript 却 可以这样做

  如果用 var 定义一个变量 则此变量为该变量所再作用域的局部变量  , 也就是说 如果在一个函数内用var声明一个变量则 此变量在函数结束后就被 销毁 。 不过 如果省略 var 操作符 声明 则创建全局变量

function count(){
    var message=100;    // 局部变量
}
count();
alert(message);     // 报错


function counta(){
   hello=100;                 // 全局变量
}
counta();
alert(hello);   //  100     

 虽然 不加var操作符 就可以 声明全局变量 但不建议这样做  要尽量少声明 全局变量 ,以减少混乱。

也可以 使用 一条语句 定义 多个变量 

var a=2,b="3",c=1;

3.4  数据类型

      ECMAScript有5种简单的数据类型 也叫 基本数据类型 : Undefined Null  Boolean Number String 。 还有 一种复杂类型 Object, object 本质上由一组无序的名和值 组成。 ECMAScript 不支持 自定义类型的机制, 所有的值都是以上六种数据类型之一。

        3.4.1  typeof操作符

                使用typeof  操作符 可以检查给定数据的类型 操作符可能返回以下字符串

  • ”undefined“  --- 如果这个值未定义 ;
  • ”String“    ---  这个值 是 字符串
  • "Number"  ---  这个值 是  数值
  • "Boolean"  ---  这个值  是  布尔值
  • "Object"   ---   这个值  是  对象 或者 null
  • "function" ---  这个值是  函数
var app="app";
alert(typeof(app));   //  "String"  
alert(typeof app);    // "String"    
alert(typeof 100);   // "Number"

 typeof 是操作符  不是函数 所以带括号和不带括号 是一样的 。  

 null 会被认为是一个空的对象引用 所有会返回 object,   函数  在ECMAscript中是对象 ,不是数据类型 但函数也的确有特殊的属性,因此 typeof 区分 函数 和 其他对象。

           3.4.2  Undefined  类型  

                 Undefined类型 只有一个值就是 undefined, 在使用var声明变量时未将其初始化 (赋值),那么这个变量的值就为 undefined  。

var message;
alert( typeof message);   // "undefined"

            3.4.3   Null  类型

               Null类型是第二给只有一个值的类型,这个值是 null  ,从逻辑角度看 null 表示一个空对象指针,因此 typeof 操作符对 null 时会返回 object 。

              3.4.4   Boolean  类型

                  Boolean类型是ECMAScript最常用的类型,此类型有两个值: false  和  true。 这两个值和数字值不是一回事 true不一定等于1  ,false不一定等于0 . 想将一个值转为 Boolean 值 可以使用 Boolean()

var message="Hello word";
alert( Boolean(message) );  // true

              以下为 转换规则:

               3.4.5 Number 类型

                   这种类型使用 IEEE754 格式来表示 整数  和 浮点数值。为支持各种数值类型 ECMA-262 定义了不同数值字面量格式。

              最基本的数值字面量格式是 十进制   直接在代码中输入数值即可。

              除了十进制外,整数还可以通过八进制 或者十六进制的 字面值来表示 , 八进制 第一位必须为0   然后是 八进制数字序列的 0~7  ,如果  字面值 中的数值超出了范围  则 前导零 会被忽略  后面的数值 按                十进制  解析。  十六进制的开始前两位必须是 0×  后面跟任何 十六进制序列数 0~9 和 A~F  (字母可以大写也可以小写),

var intNum=55;   //整数

var octalNum1=070;  // 八进制的 56
var octalNum2=079    // 无效的八进制数值    解析成  79

var hexNum1=0×A     // 十六进制的 10
var hexNum2=0×1f     // 十六进制的 31

                               浮点数值

                                             浮点数值就是 带有一个小数点的数值,如果 小数点 后没有任何数字则会被当成整数储存 。 对于 极大或者极小的 数值可以使用 e 表示法 (科学计数法),

var floatNum=3.123e7;    // 等于  31230000

                                        浮点数值的最高精度是17位小数,但在算术计算远远不如整数精确  如: 0.2+0.1  不等于 0.3  而是等于 0.30000000000004   

                               数字范围

                                        ECMAScript 能够表示最小的数值保存在 Number.MIN_VALUE 中 ,大多数浏览器这个值为: 5e-324 ; 能够表示的最大数值保存在 Number.MAN_VALUE 里 

                                         如果一个数计算超过最大范围则这个值将自动转换为特殊的 Infinty 值   如果 小于 最小范围值则 转换为  -Infinity  值  。 使用 isFinte() 函数 可以 返回这个值是否在正常范围

                              NaN   

                                         NaN  即 非数值  是一个特殊的值, 这个数值表示 本来要返回数值的操作数未返回数值的情况 。 在其他语言  任何数除以0 都会报错 但在ECMAscript中去会返回 NaN  这样就不会报错

                                         NaN 和 任何值 都不相等 包括 本身   。  isNaN() 函数可以 判断 一个值 是否  不是数值  ,如果是数值或者可以转换为数值则 返回 false。

                               数值转换 

                                         有3个函数可以把非数值转换为数值: Number() , parseInt() ,  parseFloat()  。  第一个函数可以用于任何类型  后两个函数只用于将 字符串 类型

                                      Number()  函数 转换规则 如下 

                                              如果是 Boolean的 值  true 转为 1 ,false转为 0

                                             如果是 数字值  ,只是简单的 传入 和 返回

                                               如果是 null  只是 返回 0

                                               如果是undefined 则返回 NaN

                                              如果是 字符串 则有以下规则

                                                                    如果字符串中只有数字 则将其转为 十进制数值 

                                                                    如果 字符串 包含有效的 浮点数 格式 则转换为对应的浮点数值

                                                                    如果 字符串 包含有效的十六进制格式  则转为十六进制

                                                                    如果 字符串 是空的  则 转换为 0

                                                                    如果字符串包含的是除以上的格式外 则转换为 NaN