一、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. Web标准中用于改善Web应用程序性能的各种方法总结

    提起Web应用程序中的性能改善,广大开发者们可能会想到JavaScript与DOM访问等基于各种既存技术的性能改善方法.最近,各种性能改善方法被汇总成为一个Web标准. 本文对Web标准中所包含的各种 ...

  2. select 支持宽高(高度有兼容问题);

    <select size=1(默认) size=2 没有下拉效果> <option selected>12</option> <option selected ...

  3. [知识点]网络流之Edmond-Karp算法

    // 此博文为迁移而来,写于2015年2月2日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vr12.html     ...

  4. 【Java】RuleSource约束常用方法整理

    1-常用约束规则RuleSource的设置方法   例如: addRules(new Rules(ProgramFeeItem.class){ protected void initRules() { ...

  5. lsof在运维中的应用

    场景一:文件系统使用率很高,但是找不到具体哪个文件占用了空间 原因:在unix系统中,如果有两个进程同时使用一个文件,如果其中一个进程删除了这个文件,但是这个文件此刻不会正真被释放,一直要等待引用它的 ...

  6. BZOJ4176: Lucas的数论

    Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ...

  7. OLTP与OLAP的介绍

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  8. js中操作数组的一些方法【转】

    增 push   在数组的末尾添加一个或多个元素,并返回新的长度.  array.push(1,2,3.........) unshift  在数组的开头添加一个或多个元素,并返回新的长度. arra ...

  9. WinForm 快捷键设置(转载)

    1.Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上 ...

  10. FileUpload文件上传控件

    1.FileUpload控件的主要功能是向指定目录上传文件.FileUpload控件不会自动上传控件,而需要设置相关的事件处理程序,然后在程序中实现文件上传. 2.FileUpload控件常见的属性 ...