一、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. <构建之法>3-5章感想

    提示:(下面的总结我会按照每章发现的问题,自己的回答,感想来陈述) 3章. 在阅读3.2.4职业成长-自我评估的时候,说到CRUD需要一些核心技术和许多控扩展的知识,那么作为软件工程的学生,在学校除了 ...

  2. 【POJ】2891 Strange Way to Express Integers

    http://poj.org/problem?id=2891 题意:求最小的$x$使得$x \equiv r_i \pmod{ a_i }$. #include <cstdio> #inc ...

  3. LBS基站数据解析接口

    http://www.cellocation.com/interfac/#hybrid http://www.cellid.cn/ https://www.juhe.cn/docs/api/id/8

  4. 纪念逝去的岁月——C++实现一个栈(使用类模板)

    这个版本是上个版本的加强版,上个版本的代码:http://www.cnblogs.com/fengbohello/p/4542912.html 目录 1.代码 2.运行结果 1.代码 1.1 调试信息 ...

  5. Express 路由

    路由 路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求. 路由是由一个 URI.HTTP 请求(GET.POST等)和若干个句柄组成,它的结构如下: app.METHOD(path, [ ...

  6. Shell脚本中执行mysql的几种方式(转)

    Shell脚本中执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ...

  7. PHP的学习--cookie和session--来自copy_02

    PHP的学习--cookie和session   最近读了一点<PHP核心技术与最佳实践>,看了cookie和session,有所收获,结合之前的认识参考了几篇博客,总结一下-- 1. P ...

  8. Beginning guide to Reactive Extension - Rx

    http://msdn.microsoft.com/en-us/data/gg577611.aspx

  9. [转载]QQ通讯原理及QQ是怎么穿透内网的

    QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!!! 一.登 ...

  10. Python之路(一)

    学了一整子python,目前看到了处理“列表”的地方,目前列表给我的感觉十分像数组,但不是java中的数组,更像是php中的数组. (1)创建列表的方法:列表名 = [列表项0,列表项1,······ ...