javascript中的真假值、数据类型判断以及+的特殊用法
一、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中的真假值、数据类型判断以及+的特殊用法的更多相关文章
- JavaScript中的特殊数据类型
JavaScript中的特殊数据类型 制作人:全心全意 转义字符 以反斜杠开头的不可显示的特殊字符通常为控制字符,也被称为转义字符.通常转义字符可以在字符串中添加不可显示的特殊字符,或者防止引号匹配混 ...
- 一个简单的例子让你很轻松地明白JavaScript中apply、call、bind三者的用法及区别
JavaScript中apply.call.bind三者的用法及区别 引言 正文 一.apply.call.bind的共同用法 二. apply 三. call 四. bind 五.其他应用场景 六. ...
- Javascript中的基本数据类型,如何判断数据类型,作用域链的理解
第一部分:Javascript中的数据类型 javascript中 基本数据类型有 五种, 数字 number 字符串 string 布尔 boolean 未定义 undefined 空值 nul ...
- javascript中的基本数据类型
在javascipt中有五大基本数据类型,列表如下: 1.数字 他们又又包括(正负整数,浮点数)十进制数,十六进制数与八进制数,指数和特殊数值NaN,(Infinity,-Infinity)正负无穷 ...
- Javascript 中的非空判断 undefined,null, NaN的区别
JS 数据类型 在介绍这三个之间的差别之前, 先来看一下JS 的数据类型. 在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,.... 但是 ...
- (转载)Javascript 中的非空判断 undefined,null, NaN的区别
原文地址:https://blog.csdn.net/oscar999/article/details/9353713 在介绍这三个之间的差别之前, 先来看一下JS 的数据类型. 在 Java ,C ...
- JavaScript中七种数据类型·中·一
Standing on Shoulders of Giants; 说到JavaScript里的类型很容易就让人想起 42和"42",分别是string型和number型,但是他们可 ...
- JavaScript中的基本数据类型和引用数据类型
ECMAScript变量包括了两种不同的数据类型 在学习JavaScript的数据类型时,我们通常会把数据类型分成六中(官方认为)Object.String.Boolean.Number.Undefi ...
- 浅谈Java和JavaScript中变量和数据类型的区别
对于一门编程语言的学习,如果第一步是安装环境,那么第二步一定是学习这门语言的基本规则,变量和数据类型则首当其冲 JavaScipt作为一个蹭Java热度而命名的语言,在很多方面和Java也有一定的相似 ...
随机推荐
- TC SRM 593 DIV1 250
我只能说的亏没做,要不就挂0了.. 本来想四色定理,肯定4就可以的...然后准备爆,发现3的时候不好爆,又想了老一会,嗯,数据范围不小,应该不是暴力,直接找规律,貌似最大就是3,有一个3连块,输出3, ...
- 【JAVA基础】 MAP 遍历
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- iOS 开发技巧总结
1.添加定时器的常用代码 - (void)delayEnableTabButton { self.tabChannelButton.enabled = NO; [self appendTimer]; ...
- msnodesql的使用
msnodesql的安装 npm install msnodesql 使用msnodesql写的增删改查 var sql=require('msnodesql'); var conn_str= ...
- 一个网页抓取的类支持get+post+cookie存储
前段时间提取了一个工具类,分享给大家: <?php class httpconnector { private $curl; private $cookie; private $kv; func ...
- hdu2612.。。。
原题链接 水了一天bfs了 题意:2个人分别从Y,M出发,到达其中任意一个“@” (图中有多个“@”点),2人到达的必须是同一个“@”点,求最短的路程和 思路:bfs搜2次,用一个2维数组记录到达各个 ...
- 【android应用市场】android应用市场集合
一.举例 1.酷市场 2.apkpure 国外的应用市场,可不用FQ,没有google play的一些限制 相当于google play的镜像,可以下载google play的应用 3.360手机助手 ...
- [LintCode] Valid Palindrome 验证回文字符串
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
- css3很酷的加载动画多款
在线实例:http://www.admin10000.com/document/3601.html 源码:https://github.com/tobiasahlin/SpinKit
- 打造移动终端的 WebApp(一):搭建一个舞台
最近随着 Apple iOS 和 Android 平台的盛行,一个新的名词 WebApp 也逐渐火了起来,这里我也趁着热潮做一个关于 WebApp 系列的学习笔记,分享平时的一些研究以及项目中的经验, ...