JavaScript 小笔记(一)

  1. JavaScript是由Netscape(网景)公式开发的,JavaScript最初叫LiveScript。
  2. JavaScript是一种具有面向对象能力的,解释型的程序设计语言。JavaScript是一种松散类型语言,也就是说,它的变量不必具有一个明确的类型,可以把不同的数据类型赋值给var变量。
  3. 客户端的JavaScript是指嵌入了JavaScript解释器的Web浏览器。
  4. 客户端的JavaScript一部分是正式标准化的,其他部分是事实上的标准,而另一部分是特定于浏览器的扩展。
  5. JavaScript程序是用Unicode字符编写的,是大小写敏感的,会忽略程序中记号间的空格、制表符、和换行符。
  6. 如果在行末没有分号,JavaScript会自动在行的最后添加一个分号。如果有,则不添加。
  7. JavaScript注释:
    1)//
    2)/*  ... */
  8. 标识符有字母、数字、下划线和$组成,数字不能开头。标识符不能呢关键字同名。
  9. JavaScript的基本数据类型:string、number、boolean。另外还有null和undefined以及复合数据类型--对象。一个对象表示的是值的集合,JavaScript的对象有两种,无序集合和有序集合,后者被称为数组。
  10. 特殊值的常量:

    Infinity

    表示无穷大的特殊值

    NaN

    特殊的非数字值

    Number.MAX_VALUE

    可表示的最大数值

    Number.MIN_VALUE

    可表示的最小数值

    Number.NaN

    特殊的非数字值

    Number.POSITIVE_INFINITY

    表示正无穷大的特殊值

    Number.NEGATIVE_INFINITY

    表示负无穷大的特殊值

  11. 直接量:
    字符串直接量 由单引号或双引号括起来的Unicode字符序列。var s1 = "hello"; var s2 = "world";
    函数直接量 function后加用括号括起参数列表,接着是花括号括起来的函数体。var f = function(){ /*函数体*/ }
    对象直接量 由一个列表构成,列表的元素是用冒号分隔的属性/值对,元素间逗号分隔,整个列表包含在华括号中。var obj = {name1:value2, name2:value2, ...}
    数组直接量 由方括号括起用逗号分隔的序列。var a = [1, 2, "hello", true, , , false]
  12. 数字转换为字符串(数字为var n,字符串为var s)
    1)直接加一对引号:s = n + "";
    2)使用String:s = String(n);
    3)使用toString:s = n.toString();
  13. 字符串转换为数值(数字为var n,字符串为var s)
    1)直接减去一对引号:n = s - "";
    2)使用Number:n = Number(s);
  14. null常被看作对象类的一个特殊值,如果一个变量的值为null,就说明他的值不是有效的对象、数组、数字、字符串和布尔值。
  15. undefined表示该变量没有被声明,或者已经声明但没有赋值。
  16. 区分null和undefined可以使用===或typeof。
  17. 类型转换
    字符串 数字 布尔 对象
    undefined "undefined" NaN false Error
    null "null" 0 false Error
    非空字符串 不变 字符串的数字值或NaN true String
    空字符串 不变 0 false String
    0 "0" 不变 false Number
    NaN "NaN" 不变 false Number
    Infinity "Infinity" 不变 true Number
    -Infinity "-Infinity" 不变 true Number
    其他数字 数字的字符串表示 不变 true Number
    true "true" 1 不变 Boolean
    false "false 0 不变 Boolean
    对象 toString() valueOf(),toString(),或NaN true 不变
  18. 每个基本数据类型都有它自己的基本数据类型的包装对象。简而言之,有一个相应的对象类。
    JavaScript可以灵活的将一种类型的值转换成另一种类型,当我们使用一个字符串时,JavaScript会为这个字符串内部的创建一个String包装对象。String对象就代替了原始的字符串值。由于对象具有属性和方法,因此可以在对象环境中使用简单的值。
    当我们在对象环境中使用字符串时,要注意被创建的String对象只不过是瞬时存在的,它是得我们可以访问属性和方法,使用完后就没有用了,所以系统会将它丢弃的,假设一个字符串,我们可以使用如下代码获取它的长度:
                                             var len = s.length;
    s保存了一个字符串,原始的字符串是不会自行改变的。一个新的String对象被创建了,它是瞬时存在的,是得我们能访问length属性,之后就将它丢弃,原始的s并不会改变。
    JavaScript的其他基本数据类型也是类似的,存在一个瞬态过程,以访问属性和方法。
  19. 函数的参数是局部变量,他们只在函数内部有定义。
  20. 函数中声明的所有变量,无论在哪里声明的,在整个函数中都是有定义的。
    var scope = "global";
    function f(){
    	alert(scope);           //显示 undefined
    	var scope = "local";    
    	alert(scope);           //显示local   
    }
    f();
    
    与下面等价
    var scope = "global";
    function f(){
    	var scope;
    	alert(scope);           //显示 undefined
    	scope = "local";    
    	alert(scope);           //显示local   
    }
    f();
  21. JavaScript不需要手动的释放内存,它使用垃圾收集器来回收不用的内存。
  22. 在程序的顶层代码中,如不属于函数的代码,可以使用this来引用全局对象,在函数内部this则有别的用途。
  23. 完全相等运算符===的判定
    1)如果两个值类型不等,它们就不等
    2)如果两个值的类型是数字,而且值相同,那么除非其中一个或两个都是NaN,否则它们是完全相等的,NaN不与任何值相等,包括自身,可使用全局函数isNaN()检测一个值是否为NaN
    3)如果两个值是字符串,如果长度和内容都相等,则完全相等
    4)如果两个值是布尔值,都为true或都为false时完全相等
    5)如果两个值是引用的对象,只有引用同一个对象时才完全相等
    6)如果两个值都是null或都是undefined,它们完全相等
  24. 相等运算符==的判定
    1)如果两个值有相同的类型,而且值也相同,则它们相等,否则不等
    2)如果两个值类型不同,此时
    ——如果一个值为null,另一个值为undefined,它们相等
    ——如果一个值是数字,另一个是字符串,把字符串转换为数字再比较
    ——如果一个值是true,将它转换为1再进行比较;如果一个值是false,将它转换为0再进行比较
    ——如果一个值是对象,另一个值是数字或字符串,将对象转换成原始类型的值再进行比较。可以使用toString()或valueOf()把对象转换成原始类型的值。JavaScript通常先尝试valueOf()转换,再尝试toString()转换。但对于Date,则先执行toString()转换
    ——其他的数值组合是不相等的
  25. in运算符要求其左边的运算数是一个字符串,或可以被转换常字符串,右边的运算数是一个对象或数组。如果该运算符左边的值是其右边对象的一个属性名,返回true。
  26. instanceof运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字。
  27. new运算符用来创建一个对象,并调用构造函数初始化它。语法:newconstructor(arguments)。arguments用逗号分隔。如果函数调用时没有参数,可以省略括号。如
    o = new Object; 与 o = new Object();等价。运算符new先创建一个对象,该对象的属性都未定义。接下来,它将调用特定的构造函数,传递指定的参数,此外还要把新创建的对象传递给关键字this。这样构造函数就可以使用this来初始化新对象。
  28. delete运算符:并非所有的属性和变量和属性都是可以删除的,某些内部的核心属性和客户端属性不能删除,用var语句声明的用户定义的变量也不能被删除。如果delete使用的运算数是一个不存在的属性,它将返回true。
  29. 逗号运算符(,)它先计算左边的参数,再计算其右边的参数,然后返回右边参数的值。
  30. 在switch语句中,default标签可以放置在switch语句的任何地方。

你可能感兴趣的:(JavaScript 小笔记(一))