JavaScript知识点升华

1. JavaScript中 = = =

首先,== equality 等同,=== identity 恒等。  ==, 两边值类型不同的时候,要先进行类型转换,再比较。  ===,不做类型转换,类型不同的一定不等。

下面,分别说明:  先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 

  • 如果类型不同,就[不相等] 

  • 如果两个都是数值,并且是同一个值,那么[相等]; (例外的是,如果其中至少一个是NaN,那么[不相等]。判断一个值是否是NaN,只能用isNaN()来判断)  

  • 如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。

  • 如果两个值都是true,或者都是false,那么[相等]。

  • 如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。

  • 如果两个值都是null,或者都是undefined,那么[相等]。

再说 ==,根据以下规则: 

  • 如果两个值类型相同,进行 === 比较。 

  • 如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 

    a、如果一个是null、一个是undefined,那么[相等]。 

    b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 

    c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 

    d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象。 

    e、任何其他组合,都[不相等]。 

    举例: 
    "1" == true 
     类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。 
    
    = 赋值运算符 
    == 等于 
    === 严格等于 
    例: 
    var a = 3; 
    var b = "3"; 
    
    a==b 返回 true a===b 返回 false 因为a,b的类型不一样 
    ===用来进行严格的比较判断

2. JavaScript中NaN

NaN “Not a Number”。出现这个数值比较少见,以至于我们可以不理它。当运算无法返回正确的数值时,就会返回“NaN”值。NaN 值非常特殊,因为它“不是数字”,所以任何数跟它都不相等,甚至 NaN 本身也不等于 NaN 。isNaN()计算一个参数,检查它是否为数值。

语法
isNaN(testValue) 
参数

testValue :    你想要测试的值。

如果把不是数字的变量强制转换为数字也会报这个,例如:parseInt("非数字字符串")。

3. JavaScript的数据类型都有什么?

基本数据类型5:String,boolean,Number,Undefined, Null

应用数据类型1:Object(Array,Date,RegExp,Function)

4. JavaScript中的typeof运算符

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。它返回值是一个字符串,该字符串说明运算数的类型。

你 知道下面typeof运算的结果吗?typeof(1);typeof(NaN);typeof(Number.MIN_VALUE);typeof(Infinity);typeof("123");typeof(true);typeof(window);typeof(document);typeof(null);typeof(eval);typeof(Date);typeof(sss);typeof(undefined);

看 看你会几个?

typeof是一个一元运算符,它返回的结果 始终是一个字符串,对不同的操作数,它返回不同的结果。具体的规则如下:

  • 对于数字类型的操作数而言, typeof 返回的值是 number。比如说:typeof(1),返回的值就是number。 上面是举的常规数字,对于非常规的数字类型而言,其结果返回的也是number。比如typeof(NaN),NaN在 JavaScript中代表的是特殊非数字值,虽然它本身是一个数字类型。 在JavaScript中,特殊的数字类型还有几种:

Infinity 表示无穷大特殊值NaN            特殊的非数字值
Number.MAX_VALUE     可表示的最大数字
Number.MIN_VALUE     可表示的最小数字(与零最接近)
Number.NaN         特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY  表 示负无穷大的特殊值

以上特殊类型,在用typeof进行运算进,其结果都将是number。
  • 对于字符串类型, typeof 返回的值是 string。比如typeof("123")返回的值是string。

  • 对于布尔类型, typeof 返回的值是 boolean 。比如typeof(true)返回的值是boolean。

  • 对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。

  • 对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。

  • 如果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。

5. JavaScript中的隐含参数

arguments:arguments 该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数。function:选项。当前正在执行的 Function 对象的名字。n:选项。要传递给 Function 对象的从0开始的参数值索引。说明Arguments是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,而且不能显式创建 arguments对象。arguments对象只有函数开始时才可用。

//arguments 对象的用法function ArgTest(a, b){
   var i, s = "The ArgTest function expected ";   var numargs = arguments.length;	// 获取被传递参数的数值。
   var expargs = ArgTest.length;	  // 获取期望参数的数值。
   if (expargs < 2)     s += expargs + " argument. ";   else     s += expargs + " arguments. ";   if (numargs < 2)     s += numargs + " was passed.";   else     s += numargs + " were passed.";  s += " "
   for (i =0 ; i < numargs; i++){	 // 获取参数内容。  s += "    Arg " + i + " = " + arguments + " ";  }   return(s);					 // 返回参数列表。}

http://www.jb51.net/article/46323.htm

http://www.jb51.net/article/56847.htm


你可能感兴趣的:(JavaScript知识点升华)