文档章节

JavaScript知识点升华

 蜗牛奔跑
发布于 2015/06/19 10:14
字数 1540
阅读 6
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

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


粉丝 37
博文 615
码字总数 118352
作品 0
海淀
私信 提问
加载中
请先登录后再评论。
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.2K
1
JavaScript 服务器页--JSSP

JSSP (JavaScript Server Pages) 可以让你在 Java 的应用服务器上使用 JavaScript 生成网页。支持已有的 Java 包和嵌入式 SQL 命令。包含 Dervish 这个 JavaScript 交互操作包用于简化 Ajax...

匿名
2013/02/11
3.7K
0
Promises/A 和 when() 实现--When.js

When.js 是 cujojs 的轻量级的 Promises/A 和 when() 实现,从 wire.js 的异步核心和 cujojs 的 IOC 容器派生而来。包含很多其他有用的 Promiss 相关概念,例如联合多个 promiss、mapping 和...

匿名
2013/02/15
7.4K
0
JavaScript 声效库--SFX.js

sfx.js 是一个简单的声效封装 JavaScript 包。示例: var sfxObject = new SFX( 'sound_effects/{{type}}' ); 支持: Chrome: OGG + MP3 Opera: OGG Firefox: OGG Safari: MP3 IE9: MP3......

匿名
2013/02/18
1K
0
JS框架--Cyer

Cyer是一个轻量、小巧的js框架,精简易懂的API设计,支持链式调用,有点jQuery的味道。核心部分为选择器(selector)、dom操作、event机制。暂不支持animate功能。版本更新到v1.0.3,增加domRe...

黄昌运
2013/03/06
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

鼠年吉祥,新年快乐

今天是大年初一,很高兴在过去一年中有您的陪伴,希望大家在新的一年中平安健康,一切顺利,加油。 邓飞 202001250539 于后园爷爷家 本文分享自微信公众号 - 育种数据分析之放飞自我(R-bre...

育种数据分析之放飞自
01/25
0
0
不烧脑、不耗时、全免费,带你0基础学Python

文末有福利 Python是人工智能的未来。 最近,电气和电子工程师协会( IEEE)发布了顶级编程语言交互排行榜:Python高居首位。 而且随着大数据和人工智能的发展,Python受到了越来越多程序员的...

kunjian
今天
0
0
R语言入门系列之一

写在前面 计算机语言的学习并不困难,关键是一定要由浅入深的实际操作练习。也许最开始的比较简单,学习者一带而过没有实际操作,之后的进一步学习很可能会陷入不知所云的困境,实际操作所带...

SYSU星空
2019/02/17
0
0
Istio-本地运行

概述 基于上一篇 Istio1.6-二进制编译和本地运行 但集中在 pilot-discovery 和 envoy(pilot-agent 大部分功能仅作为 envoy 的 watchdog,略过) NOTE: 以下的描述,相对路径都基于目录 /g...

深蓝苹果
24分钟前
9
0
基于Linux、C、JSON、Socket的编程实例(附代码)

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间阅读编程笔记! 一、前言 之前在学习socket编程的时候有分享一个基于控制台的简易天气客户端的实现,当时提供的是window下的代码,最近...

学以解忧
2019/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部