• ECMAScript 语法 笔记


    http://www.w3school.com.cn/js/pro_js_syntax.asp

    主要跟c比较:

    每行结尾的分号可有可无最好的代码编写习惯是总加入分号

  • 单行注释以双斜杠开头(//)
  • 多行注释以单斜杠和星号开头(/*),以星号和单斜杠结尾(*/)
  • 使用 var 运算符声明变量,ECMAScript 是弱类型

    变量声明不是必须的

    ECMAScript 另一个有趣的方面(也是与大多数程序设计语言的主要区别),是在使用变量之前不必声明。例如:

    var sTest = "hello ";
    sTest2 = sTest + "world";
    alert(sTest2);
    ECMAScript 的解释程序遇到未声明过的标识符时,用该变量名创建一个全局变量,并将其初始化为指定的值。最好的习惯是像使用其他程序设计语言一样,总是声明所有变量

    ECMA-262 定义了 ECMAScript 支持的一套保留字(reserved word)

    关键字(keyword)是保留的,不能用作变量名或函数名

    保留字(reserved word)在某种意思上是为将来的关键字而保留的单词。因此保留字不能被用作变量名或函数名。

    ECMAScript 原始值和引用值  (很重要)

    在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

    原始值
    存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
    引用值
    存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。

    原始类型之一,即 Undefined、Null、Boolean、Number 和 String 型。由于这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 - 栈中。这样存储便于迅速查寻变量的值。

    在许多语言中,字符串都被看作引用类型,而非原始类型,因为字符串的长度是可变的。ECMAScript 打破了这一传统。

    ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

    Undefined 类型

    如前所述,Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。

    Null 类型

    另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

    Boolean 类型

    Boolean 类型是 ECMAScript 中最常用的类型之一。它有两个值 true 和 false (即两个 Boolean 字面量)。

    Number 类型

    ECMA-262 中定义的最特殊的类型是 Number 类型。这种类型既可以表示 32 位的整数,还可以表示 64 位的浮点数。

    八进制数和十六进制数

    var iNum = 070; //070 等于十进制的 56

    var iNum = 0x1f; //0x1f 等于十进制的 31

    浮点数

    var fNum = 5.0;

    var fNum = 5.618e7

    8-e17

    特殊的 Number 值

    Number.MAX_VALUE 和 Number.MIN_VALUE

    当计算生成的数大于 Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着不再有数字值。同样,生成的数值小于 Number.MIN_VALUE 的计算也会被赋予值 Number.NEGATIVE_INFINITY,也意味着不再有数字值。如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。

    事实上,有专门的值表示无穷大,(如你猜到的)即 Infinity。Number.POSITIVE_INFINITY 的值为 Infinity。Number.NEGATIVE_INFINITY 的值为 -Infinity。

    由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的(而不是单独测试每个无穷数)。可以对任何数调用 isFinite() 方法,以确保该数不是无穷大。例如:

    var iResult = iNum * some_really_large_number;
    
    if (isFinite(iResult)) {
        alert("finite");
    }
    
    else {
        alert("infinite");
    }

    最后一个特殊值是 NaN,表示非数(Not a Number)。NaN 是个奇怪的特殊值。一般说来,这种情况发生在类型(String、Boolean 等)转换失败时。例如,要把单词 blue 转换成数值就会失败,因为没有与之等价的数值。与无穷大一样,NaN 也不能用于算术计算。NaN 的另一个奇特之处在于,它与自身不相等,这意味着下面的代码将返回 false:

    alert(NaN == NaN);  //输出 "false"

    出于这个原因,不推荐使用 NaN 值本身。函数 isNaN() 会做得相当好:

    alert(isNaN("blue"));  //输出 "true"
    alert(isNaN("666"));  //输出 "false"

    String 类型

    String 类型的独特之处在于,它是唯一没有固定大小的原始类型。可以用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示(Unicode 是一种国际字符集,本教程后面将讨论它)。

    字符串字面量是由双引号(")或单引号(')声明的。而 Java 则是用双引号声明字符串,用单引号声明字符。但是由于 ECMAScript 没有字符类型,所以可使用这两种表示法中的任何一种。例如,下面的两行代码都有效:

    var sColor1 = "red"; var sColor2 = 'red';

    ECMAScript 类型转换

    var iNum1 = parseInt("12345red"); //返回 12345

    var iNum1 = parseInt("0xA"); //返回 10

    var iNum1 = parseInt("56.9"); //返回 56

    var iNum1 = parseInt("red"); //返回 NaN

    String 对象的所有属性和方法都可应用于 String 原始值上,因为它们是伪对象。

    todo:

    http://www.w3school.com.cn/js/pro_js_operators_unary.asp

  • 相关阅读:
    【CF global1 D / CF1110D】 Jongmah
    【笔记】数论
    【CF EDU59 D】Compression
    【CF EDU59 E】 Vasya and Binary String (DP)
    【cf527 E】Minimal Diameter Forest
    【模板】分治FFT
    【2018沈阳现场赛I】Distance Between Sweethearts
    【2018沈阳现场赛k】Let the Flames Begin
    【笔记】生成函数与大背包问题
    训练实录 <sudo rm -rf />
  • 原文地址:https://www.cnblogs.com/cute/p/2263155.html
  • Copyright © 2020-2023  润新知