数据类型

ECMAscript有五种简单数据类型:Undefined,Null,Boolean,String,Number,还有一种复杂数据类型Object,Object本质上是由一组无序的名值组成的.

1.Undefined

Undefined类型只有一个值,undefined.使用var声明变量但未对其初始化时,这个变量的值就是undefined.

2.Null

Null只有一个值,null.
如果定义的变量准备在将来保存变量,那么最好将该变量初始化为null值,这样只要直接检查null值就可以知道相应变量是否已经保存了一个对象的引用.例如:

if (car != null){
//执行某些操作
}

3.Boolean

Boolean类型有两个值true和false
要将一个值转换为Boolean类型,可以调用转型函数Boolean():
var word = "hello world";
var boolWord = Boolean(word);

各种类型转换为Boolean类型的转换规则

数据类型 转换为true的值 转换为false的值
String 任何非空字符串 ""(空字符串)
Number 任何非0数值 0和NaN
Object 任何对象 null
Undefined n/a undefined

4.Number

4.1浮点数值

由于保存浮点数值的内存空间的数值是整数数值的两倍,因此ECMAscript会不失时机的将浮点数值转换为整数值.
如果小数点后面没有任何数字,就按整数保存,如果浮点数值本身表示得就是一个整数,那么就按整数保存(如1.0).
浮点数值最高精度是17位小数,但在算数计算时精度却不如整数.例如
if(a+b==0.3){

//不能这样!!!
alert("0.3");

};
关于浮点数值计算会产生舍入误差的问题,有一点需要明确:这是使用基于 IEEE754 数值的浮点计算的通病

4.2数值范围

[Number_MIN_VALUE,Number_MAX_VALUE]
在大多数浏览器中,这两个值是[5e-324, 1.7976931348623157e+308]
如果得到超出js的值,那么这个值会被转换为 -/= Infifity
如果某次计算的的返回正或者负的Infinity值,那么该值无法参与下一次计算.

4.3.NaN

即Not a Number
这个数值用来表示一个要返回数值的操作数未返回数值的情况,这样就不会抛出错误了.
任何涉及NaN的操作都会返回NaN(如NaN/10)
NaN与任何值都不相等,包括NaN
isNaN();
任何不能转换为数值的都返回true
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)

4.4.数值转换

有三个函数可以把非数值转换为数值
Number();//可以把任何类型转换为数值
//下面两个只能把字符串转换为数值
parseInt() ;
parseFloat();

Number()转换规则
Boolean: true -> 1 false -> 0
null: 0
undefined: NaN
如果是字符串:

如果只包含数字 将其转换为十进制数字 011 -> 11  1.1->1.1 01.1 -> 1.1
空字符串 -> 0
其他字符 -> NaN

如果是对象:

则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换 的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符 串值

5.String

字符串可以由双引号或者单引号表示
字符串一旦创建,它的值就不能改变.要改变某个变量保存的字符串,首先要销毁原来字符串,再用一个包含新值的字符串填充该变量:
var lang ="hello";
var hd = lang + "world";

转换为字符串

toString();
String();

var a =111;
a.toString();
多数情况下调用toStiring不用传递参数,但在调用数值的toString()方法时,可以传递一个参数:
var num = 10;
alert(num.toString());//10
alert(num.toString(2));//1010 2进制

在不知道转换的值是不是null或者undefined的情况下,还可以使用转型函数String();

如果值有toString()方法,则调用toString()
如果值是null,则返回"null"
如果值是undefined,则返回"undefined"
var value = 10;
alert(String(value));//"10"

要把某个值转换为字符串,可以使用加号操作符(3.5 节讨论)把它与一个字符 串("")加在一起。

6.Object

ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建 的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定 义对象,如下所示:

var o = new Object();

我的javascript学习笔记之数据类型相关推荐

  1. JavaScript 学习笔记(1)

    1.     何为 Jscript JScript 是一种解释型的.基于对象的脚本语言. 局限性: 1)        不能使用该语言来编写独立运行的应用程序 2)        没有对读写文件的内置 ...

  2. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  3. JavaScript学习笔记(六)--数组

    数组初始化 我们都知道,数组是用于保存多个值的集合,在数组中,值被称为元素,值可以是任意的数据类型.在Javascript中,创建数组通常有两种方式:字面量和构造函数. 字面量 数组的元素可以是任意的 ...

  4. JavaScript学习笔记(三)--操作运算符

    JavaScript中的运算符有很多,主要分为算术运算符,比较运算符,逻辑运算符,三目运算符.一元运算符.位运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScript中的 ...

  5. JavaScript学习笔记:类型检测

    JavaScript学习笔记:类型检测 1.利用typeof检测数据类型 注意:type of null,返回的不是"null",而是"object".type ...

  6. JavaScript 学习笔记(第三天)

    JavaScript 学习笔记(第三天) 一.数组 1.1.数组的基础 1.2.数据类型分类 1.3.创建数组 1.3.1.字面量创建一个数组 1.3.2.内置构造函数创建数组 1.4.数组的基本操作 ...

  7. JavaScript 学习笔记(二)

    JavaScript 学习笔记(二) 文章目录 JavaScript 学习笔记(二) 一 JSON 1. JSON 对象 什么是JSON对象 JSON对象与Javascript对象的区别 在JavaS ...

  8. JavaScript学习笔记03-数组-Data对象-Math对象-包装类-字符串-正则

    目录 一.数组 索引 数组的特点 1.1.数组的创建 1.1.1.使用new关键字(构造函数) 1.1.2.使用字面量形式 1.1.3.创建数组的注意事项 1.2.数组的基本使用 1.2.1.存操作( ...

  9. JavaScript学习笔记(第二部分)总共四部分

    JavaScript学习笔记(第二部分)总共四部分 4 对象(Object) 字符串String.数值Number.布尔值Boolean.空值Null.未定义Undefined是基本的数据类型,这些数 ...

  10. JavaScript学习笔记(四)---闭包、递归、柯里化函数、继承、深浅拷贝、设计模式

    JavaScript学习笔记(四)---闭包.递归.柯里化函数.继承.深浅拷贝.设计模式 1. 匿名函数的使用场景 2.自运行 3.闭包 3.1前提: 3.2闭包 4.函数对象的三种定义方式 5.th ...

最新文章

  1. 路由算法与路由协议概述
  2. java的CountDownLatch使用
  3. 不用计算实现 图片懒加载
  4. 4位先行进位加法器_行波进位/超前进位加法器详解
  5. linux 丢包多少正常_Linux 问题故障定位,看看这篇
  6. php k线图粒度计算,【k线】k线图中MA均线计算
  7. 【编译器】VSCode配置Go语言开发环境
  8. python 核心数_Python hex()
  9. 一、appium的下载安装
  10. fiddler软件抓包工具超详细配置方法
  11. R语言 相关性的显著性检验
  12. 恒生电子2019校园招聘笔试题
  13. 漫谈Go语言与区块链
  14. 【Unity面板属性扫盲】导入纹理后设置Texture Import Settings
  15. 2019-2020-1 1823《程序设计与数据结构》每周成绩
  16. 对JavaEE的理解
  17. 中国自媒体行业竞争格局与运营盈利模式分析报告2022年
  18. 大数据应用要经得起考验,不可盲目跟风_光点科技
  19. VBS写成的远控病毒分析
  20. 城市轨道交通信号系统学习笔记1--ATC系统概述

热门文章

  1. python用缩进来写模块_进击python第一篇:相遇
  2. view转换成html字符串,从Webview获取html字符串并将其存储为html文件
  3. 计算机网络ip地址博客,计算机网络中,这些IP地址你知道吗?
  4. java看视频可以学会吗,看it教程视频自学Java编程可以学会吗?
  5. allegro中10mil过孔_Allegro中增加过孔的方法
  6. php-5.4 升级到 php7.2
  7. python编程(基于twisted的client编程)
  8. 使用tuned/tuned-adm工具动态调优你的CentOS系统
  9. curl 同时发送多个请求
  10. Android Browser学习九 快捷菜单模块: PieControl的架构