一、javascript中的假值

  jQuery中拥有一组数量奇大的假值,包括

    0,NaN(非数),''(空字符串),false,null,undefined

  这些值在if判断中全部等于假,但这些值彼此是不==的。注意空数组[],空对象{}在if判断中是为真的。

二、javascript中的数据类型

  javascript中变量是没有类型的,只有值才有,变量可以随时持有任意类型的值。

  1)在javascript中一共有七种内置类型,分别是

  string,number,boolean,null,undefined,object,symbol(ES6中新增)

  其中,string,number,boolean,null,undefined是简单基本类型,其本身并不是对象(从这个角度来说,javascript中万物皆对象的说法不完全正确),有时候null会被当做对象,因为typeof null返回object,实际上null本身是一种基本类型。

  2)javascript typeof的返回值有七种,它返回类型的字符串值,有意思的是,这其中类型和它的字符串值并不一一对应,分别是字符串形式的

  string,number,boolean,object,function,undefined,symbol

  其中,typeof undefined =='undefined',typeof null则返回object,虽然null是一种基本的数据类型。typeof function a(){} 则返回 function,虽然function只是object的一种子类型。

  3)javascript的Object有一些对象子类型,包括:

  String,Number,Boolean,Object,Function,Array,Data,RegExp,Error

  其中,String,Number,Boolean是基本类型string,number,boolean的包装类型,当调用对应的方法时,其拆包和装包是自动发生的。

  4)通过Object.prototype.toString.call()返回的值则有10钟,分别是:

  [object String],[object Number],[object Boolean],[object Object],[object Function],[object Array],[object Date],[object RegExp],[object Null],[object Undefined]

  上述对象大多有有文字字面量和构造函数两种形式,其中null和undefined没有对应的构造形式,只有文字形式;相反Date只有构造,没有文字形式。

三、javascript中的类型判断

  鉴于对象子类型通过typeof是判断不出来的,例如Array,Date的typeof都为Object,RegExp在有些浏览器下为Object,在有些浏览器下为Function。因此typeof在这种情况下是不能精确判断的。像jQuery这样的类库都是通过Object.toString.call的方法来进行类型判断

  此外,对于数字类型,最好使用isFinite判断,isFinite在判断之前会试图将参数转换为number类型。

      class2type={},
core_toString=class2type.toString,
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){
class2type["[object "+name+"]"]=name.toLowerCase();
});
type:function(obj){
if(obj===null){
return String(null);
}
//Date,Array等类型typeof都会返回object,function、正则(部分浏览器)中 typeof都会返回function if(typeof obj==='object'||typeof obj==='function'){
return class2type[core_toString.call(obj)]||'object';
}
return typeof obj;
},
        isNumeric:function(obj){
return !isNaN(parseFloat(obj))&&isFinite(obj);
},

三、javascript中加号的神奇用法

在javascript中,+通常用户数学上的加法运算,以及字符串的链接运算。实际上,+还有一些特殊用法。

1.将日期转换为毫秒整数

//+将日期转换为毫秒计数的整数
console.log(+new Date()); //
console.log(+new Date('2016/11/11 0:00')); //

2.转换为数字

//将其他类型的数据转换为数字类型(多为字符串转换为数字)
console.log(+''); //
console.log(+true); //
console.log(+false); //
console.log(+undefined); //NaN
console.log(+null); //
console.log(+NaN); //NaN
console.log(+''); //
console.log(+''); //
console.log(+'1xy'); //NaN

  

javascript中的真假值、数据类型判断以及+的特殊用法的更多相关文章

  1. JavaScript中的特殊数据类型

    JavaScript中的特殊数据类型 制作人:全心全意 转义字符 以反斜杠开头的不可显示的特殊字符通常为控制字符,也被称为转义字符.通常转义字符可以在字符串中添加不可显示的特殊字符,或者防止引号匹配混 ...

  2. 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别

    JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...

  3. Javascript中的基本数据类型,如何判断数据类型,作用域链的理解

    第一部分:Javascript中的数据类型 javascript中 基本数据类型有 五种, 数字 number 字符串 string  布尔 boolean  未定义 undefined 空值 nul ...

  4. javascript中的基本数据类型

    在javascipt中有五大基本数据类型,列表如下: 1.数字 他们又又包括(正负整数,浮点数)十进制数,十六进制数与八进制数,指数和特殊数值NaN,(Infinity,-Infinity)正负无穷 ...

  5. Javascript 中的非空判断 undefined,null, NaN的区别

    JS 数据类型 在介绍这三个之间的差别之前, 先来看一下JS  的数据类型. 在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,.... 但是 ...

  6. (转载)Javascript 中的非空判断 undefined,null, NaN的区别

    原文地址:https://blog.csdn.net/oscar999/article/details/9353713 在介绍这三个之间的差别之前, 先来看一下JS  的数据类型. 在 Java ,C ...

  7. JavaScript中七种数据类型·中·一

    Standing on Shoulders of Giants; 说到JavaScript里的类型很容易就让人想起 42和"42",分别是string型和number型,但是他们可 ...

  8. JavaScript中的基本数据类型和引用数据类型

    ECMAScript变量包括了两种不同的数据类型 在学习JavaScript的数据类型时,我们通常会把数据类型分成六中(官方认为)Object.String.Boolean.Number.Undefi ...

  9. 浅谈Java和JavaScript中变量和数据类型的区别

    对于一门编程语言的学习,如果第一步是安装环境,那么第二步一定是学习这门语言的基本规则,变量和数据类型则首当其冲 JavaScipt作为一个蹭Java热度而命名的语言,在很多方面和Java也有一定的相似 ...

随机推荐

  1. MySQL优化经验和方法汇总

    一.服务器硬件对MySQL性能的影响  1.磁盘寻道能力(磁盘I/O),以目前高转速SCSI硬盘(7200转/秒)为例,这种硬盘理论上每秒寻道7200次,这是物理特性决定的,没有办法改变. MySQL ...

  2. objective-c 通过类名实例化类

    NSString *myClassName = @"MainScene"; Class myClass = NSSClassFromString(myClassName);

  3. ACM: Gym 100935B Weird Cryptography - 简单的字符串处理

    Weird Cryptography Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  4. ACM: 强化训练-百度之星-Problem C-字典树

    Problem C Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Descript ...

  5. 洛谷 P1991 无线通讯网 Label:最小生成树 || 二分

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  6. js判断访问来源

    通过navigator的userAgent属性来判定 userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值.一般来讲,它是在 navigator.appCode ...

  7. 【ZOJ】3640 Help Me Escape

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4808 题意:一个吸血鬼初始攻击力为f.n条路,他每次等概率选择一条路.如果攻击 ...

  8. GO语言练习:构建json 和 解析JSON 实例

    本文介绍如何使用Go语言自带的库把对象转换为JSON格式,并在channel中进行传输后,并把JSON格式的信息转换回对象. 1.Go语言的JSON 库 Go语言自带的JSON转换库为 encodin ...

  9. JavaScript的几种继承方式

    看<JavaScript高级程序设计>做的一些笔记 ECMAScript只支持实现继承,不支持接口继承(因为函数没有签名) 原型链(实现继承的主要方法): function SuperTy ...

  10. Missing number

    Missing number 题目: Description There is a permutation without two numbers in it, and now you know wh ...