每种语言都有自己的基本类型,javascript也不例外。在javascript中有五大基本类型,分别是number,string,boolean,null,undefined。其他不属于这五种基本类型的都是对象,有时候null也h是对象的一种。

  一、基本类型介绍

  可以通过typeof来确定是哪种类型。

  number包括基本的数字,Infinity,unInfinity,NaN。其中NaN比较特殊,在一个不能做运算的时候做了运算就会得到NaN的结果,例如1*'abc'。

  string几乎所有的语言都有的类型,但是实现都不一样。

  boolean也是很常见的一种基本类型,只有两个值true和false。

  null其实就是空

  undefined指的是未定义的

  二、类型转换

  任何语言都可以进行类型转换。javascript特殊的一点是她回自动做一些类型转换,这样做的好处是开发者不用做一些强制的类型转换,但是这个特性也是被视为javascript诟病之一,很多人认为这个特性会造成一些意想不到的错误。当然我觉得只要掌握好类型转换的特点和细节,就能够趋利避害。

  说几点在类型转换中容易出错的地方。

  在做+操作时一定要注意,因为在javascript中,+既可以是数字的加法,也可以是字符串的拼接。当两个操作数之一是字符串是就会将另一个数字转换为字符串,再做字符串的拼接,例如1+'12'和'1'+12得到的都是字符串'112'。所以如果想要做数字的加法,一定要保证两个操作数都是数字,可以用Number进行强制类型转换,例如1+Number('12')。当然也可以用一些简单地转换例如1+1*'12'。但是不推荐这二种做法,因为语义不明确,会给阅读代码的人造成困惑或误解。

  任何变量都可以转换为Boolean值,不是true就是false。常见的空字符串'',undefined,null,NaN,0都可以被转换为false。其他的则都是true。

  我们在定义变量时,经常会这么做var a = a || 10。我们想做的是,如果a被定义了则使用a的值,没定义则赋值为10.但是经常忽略,如果a的值为0。所以这种定义方法一定要慎用。

  在javascript中做等比较时有两种做法,一个是==另一个是===,对应的不等比较是!=和!==。===被称作是严格相等。两者的区别是,==会做类型转换而===不会,例如1=='1',1==true都会返回true,而1==='1',1===true则会返回false。所以在做等比较时也一定要慎重。

  三、总结

  作为一门弱类型语言,javascript的类型转换一方面给开发者带来了很多方便而受人们追捧,另一方面也会产生一些莫名其妙的错误而遭人谩骂。其实我觉得任何语言都是不完美的,而我们能做的就是真正精通这些可能产生误区的特性,趋利避害才是王道。

  

javascript基本类型及类型转换的更多相关文章

  1. Flow: JavaScript静态类型检查工具

    Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可 ...

  2. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  3. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  4. 你不知道的JavaScript之类型

    JavaScript是一门简单易用的语言,应用广泛,同时它的语言机制又十分复杂和微妙,即使经验丰富的开发人员也需要用心学习才能真正掌握. <你不知道的JavaScript>中是这样定义类型 ...

  5. JavaScript的类型自动转换高级玩法JSFuck

    0 前言 最开始是不小心在微信公众号(程序员大咖)看到一篇JS的高逼格代码,然后通过里面的链接跳转到了JSFuck的wiki,就像顺着迷宫找宝藏的感觉,感叹JS的自动类型转换的牛逼. 1 样例 (!( ...

  6. 谈 JavaScript 中的强制类型转换 (2. 应用篇)

    这一部分内容是承接上一篇的, 建议先阅读谈 JavaScript 中的强制类型转换 (1. 基础篇) 前两章讨论了基本数据类型和基本包装类型的关系, 以及两个在类型转换中十分重要的方法: valueO ...

  7. 详细理解javascript中的强制类型转换

    将值从一种类型转换为另一种类型通常称为类型转换,这是显式的情况:隐式的情况称为强制类型转换,JavaScript 中的强制类型转换总是返回标量基本类型值,如字符串.数字和布尔值. 如何理解: 类型转换 ...

  8. JavaScript事件类型

    JavaScript事件类型 Web浏览器中可能发生的事件有很多类型.这里我将主要将下面几种常用的事件类型: UI事件 焦点事件 鼠标与滚轮事件 键盘与文本事件 复合事件 变动事件 HTML5事件 设 ...

  9. javascript学习-类型判断

    javascript学习-类型判断 1.类型判断的的武器 javascript中用于类型判断的武器基本上有以下几种: 严格相等===,用来判断null,undefined,true,false这种有限 ...

随机推荐

  1. 查看java进程内存简单示例

    分析工具 1.jps 显示指定系统内的所有JVM进程 2.jstat 收集JVM各方面的运行数据 3.jinfo  显示JVM配置信息 4.jmap  堆快照 5.jhat  分析headdump文件 ...

  2. 11G利用隐含参数,修改用户名

    步骤概述: 1. 停库,修改隐含参数_enable_rename_user 为true 2. 以 restrict方式启动数据库 3.  alter user  aaaa   rename   to ...

  3. 【串线篇】面向切面编程AOP

    面向切面编程AOP 描述:将某段代码“动态”的切入到“指定方法”的“指定位置”进行运行的一种编程方式 (其底层就是Java的动态代理)spring对其做了简化书写 场景: 1).AOP加日志保存到数据 ...

  4. webpack 模块热替换的理解和使用

    模块热替换(webpack文档上也叫 Hot Module Replacement 或 HMR)是 webpack 提供的最有用的功能之一.它允许在运行时更新各种模块,而无需进行完全刷新. 这句话其实 ...

  5. POJ 2955 Brackets (区间dp入门)

    Description We give the following inductive definition of a “regular brackets” sequence: the empty s ...

  6. MySQL主从同步(binlog方式)

    原文:https://blog.csdn.net/demonson/article/details/80526533

  7. paper 135:关于C#泛型的知识点

    计划着要用一个月的时间把  C#语言Windows程序设计 搞定,现在是零零散散的知识点,日积月累吧!朋友们,看这里咯~呵呵 原文地址:http://www.blogjava.net/Jack2007 ...

  8. percona-toolkit工具包的安装和初步使用

    percona-toolkit工具包的安装和初步使用 原文地址:http://blog.csdn.net/yumushui/article/details/42919601 一.percona-too ...

  9. [Repost] 悬线法

    <浅谈用极大化思想解决最大子矩形问题>作者:王知昆 首先,根据定理1:最大有效子矩形一定是一个极大子矩形.不过与前一种算法不同的是,我们不再要求每一次枚举的一定是极大子矩形而只要求所有的极 ...

  10. 楼房重建 (rebuild)

    楼房重建 (rebuild) 题目描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子.为了简化问题 ...