文档章节

JavaScript知识点升华

 蜗牛奔跑
发布于 2015/06/19 10:14
字数 1540
阅读 5
收藏 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


本文转载自:

共有 人打赏支持
粉丝 36
博文 607
码字总数 117180
作品 0
海淀
四月前端知识集锦(每月不可错过的文章集锦)

目前自己组建的一个团队正在写一份面试图谱,将会在七月中旬开源。内容十分丰富,第一版会开源前端方面知识和程序员必备知识,后期会逐步写入后端方面知识。因为工程所涉及内容太多(目前已经...

夕阳
05/02
0
0
零基础的网站开发初学者如何系统的学习?

A.学习背景 开始网站开发,起先是从手机网站的UBB语法开始的,也因此有了深入学习的兴趣。为了让学习的热情膨胀,我有意的培养这一爱好 ,定位了自己要成为一名优秀的网站开发员的目标。 作为...

李佳顺
2012/12/25
0
3
JavaScript 学习资源推荐

最近 reddit 有讨论:References for JavaScript Mastery. 去年 Rey Bango 博客上也有一篇文章:What to Read to Get Up to Speed in JavaScript. 下面是我的整理,希望能对你有所帮助。 登堂...

deeper099
2011/09/29
0
1
《JavaScript权威指南》笔记(一)

《JavaScript权威指南》真是名符其实的好书!真遗憾初学JavaScript时没有立即读这本书,甚为遗憾。不过小有经验之后读来更是有如醍醐灌顶一般,许多之前遇到的奇怪问题和读不懂的代码都迎刃而...

小微
2012/08/28
0
1
从零开始学 Web 之 JavaScript(一)JavaScript概述

大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程。此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注。在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间...

fengdaoting
06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg调试C源码级驱动

联机方式不多说了。我博客里有,英文的。 windbg联机文档 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel......

simpower
34分钟前
0
0
redis快照和AOF简介

数据持久化到硬盘:一是快照(snapshotting),二是只追加文件(append-only file AOF) 快照 核心原理:redis某个时间内存内的所有数据写入硬盘 场景:redis快照内存里面的数据 1. 用户发送bgsav...

拐美人
34分钟前
0
0
这个七夕,送你一份程序员教科书级别的告白指南

给广大爱码士们的高能预警: 今天,就是七夕了…… (单身非作战人群请速速退场!) 时常有技术GG向个推君抱怨 经过网民多年的教育 以及技术人持之以恒的自黑 冲锋衣狂热分子·格子衫骨灰级粉...

个推
39分钟前
0
0
python爬虫日志(15)cookie详解

转载:原文地址 早期Web开发面临的最大问题之一是如何管理状态。服务器端没有办法知道两个请求是否来自于同一个浏览器。那时的办法是在请求的页面中插入一个token,并且在下一次请求中将这个...

茫羽行
40分钟前
0
0
qlv视频格式转换器

  腾讯视频中的视频影视资源有很多,小编经常在里面下载视频观看,应该也有很多朋友和小编一样吧,最近热播的电视剧也不少,如《香蜜沉沉烬如霜》、《夜天子》还有已经完结的《扶摇》,这么...

萤火的萤火
43分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部