JavaScript②数据类型

栏目: JavaScript · 发布时间: 7年前

内容简介:JavaScript②数据类型

ECMAScript中有5种简单的数据类型,也成为基本数据类型;Undefined、Null/Boolean/Number/String。还有一种复杂的数据类型,Object(还有一种特殊的Function)object本质是由一组无序的键值对组成的;

typeof操作符

  • console.log(typeof qqqq);//undefined,这个变量没有定义;
  • console.log(typeof (222));//number,是一个数字; typeof是操作符而不是方法,所以后面可以加()也可以不加;
  • console.log(typeof “222”);//string,是一个字符串
  • console.log(typeof false);//boolean,是一个布尔值
  • console.log(typeof {});//object 是一个对象
  • console.log(typeof null);//objecy 是一个对象,在javascript里,null是一个空指针;
  • console.log(typeof function(){});//function,是一个方法,也是属于object类型的;js里万物皆对象

从技术的角度上将,函数在ECMAScript中是对象,不是一种数据类型,属于对象,在就是里万物皆对象的,但是,函数也确实有一些特殊的属性,因此通过typeof操作符来区分也是有必要的;

typeof检测任何数据,返回的都是一个字符串,两次和两次以上的连续typeof结果肯定都是string;

null和undefined

  • null
    • 逻辑上null表示一个空对象的指针
    • 使用typeof检测的时候会返回object;(null是object原型的终点)
  • undefined
    • 使用var声明变量但没有初始化
    • 区分空对象指针与尚未定义的变量
    • 对未初始化的变量以及未声明的变量使用
    • typeof运算符均会返回undefined;
  • undefined和null的关系;是undefined派生自null;因为undefined派生子null;所以Null和undefined做比较的时候是true;但是null和undefined和别的人和类型比较都不想等;
    • undefined派生子null,因此在使用”==”进行比较的时候会返回true;
    • 没有必要将变量显示声明undefined;
    • 声明非空对象对应将其赋值为null;比如做定时器的时候用;

Undefined只有一个值,就是特殊的undefine;(大写的Undefined是代表Undefined类的意思,就好比人类和人的关系;)

var test1;
var test2=undefined;
console.log(test1==undefined);//true,变量声明了,但是没有定义;
console.log(test1=="undefined");//false,"undefined"是一个字符串,含有undefined的字符;而不是undefined类型;
console.log(test2==undefined);//true,变量声明了,但是没有被定义,undefined是变量的默认值;我们声不需要显示的把某个变量设置为undefined,因为没有赋值的变量,默认就是undefined;可以试验下,这里的两个等于号和三个等于号的区别,2个是比较(会隐式转换类型,===是不转化类型的,是绝对相等)
console.log(test1);//undefined
console.log(test2);//undefined
console.log(test3);//Error,报错了; Uncaught ReferenceError: test3 is not defined;

对于尚未声明的变量,只能执行一项操作,就是typeof检测其数据类型;

String

字符串的特性

  • 由0个或多个16位unicode字符组成;
  • 单引号和双引号都可以;但是单引号和双引号不能交叉使用;(放在引号内的任何东西都是属于字符串,即使里面没有东西或者空格,都属于合法的字符串 )
  • 使用.length属性可以访问字符串的长度
  • 转义序列表示一个字符
  • 无法精确返回双字节字符长度
  • 字符串一旦被创建,其值是不能改变的,若要改变必须销毁原有字符串,然后用另一个包含新值的字符串填充改变量;
    转义序列(仅作了解);
  • \n 换行,常用的,这个需要记住;
  • \斜杠\ 常用
  • \’单引号 常用
  • \”双引号 常用

  • \t 制表符

  • \b 空格
  • \r 回车符
  • \f 分页符
  • \xnn 十六进制,n代表0-F
  • \unnnn 以十六进制代码表示一个unicode字符

类型转换

  • toString():转换为字符串
var is = true;
is.toString(); //"true"
var num = 10;
num.toString(); //"10"
num.toString(2); //"1010" (二进制)
num.toString(8); //"12" (八进制)
num.toString(16); //"A" (十六进制)
  • String()

null和undefined没有toString方法,所以转换的时候用String()函数。如果值是null,则返回”null”,如果值是undefined则返回”undefined”。

var value1 = 10;
var value2 = null;
var value3;

String(value1); //"10"
String(value2); //"null"
String(value3); //"undefined"

Number

var  intNum = 55; //整数

var octalNum = 0o70; //八进制 以 0o开头

var hexNum = 0xAA; //十六进制

var floatNum = 1.1; //浮点数

var floatNum1 = 1. //解析为整数1
var floatNum2 = 10.0 //解析为整数10

floatNum = 3.125e7; //e表示法

数值范围

  • 最小值 Number.MIN_VALUE
  • 最大值 Number.MAX_VALUE:
  • 超出范围
    • 正无穷
      • Infinity
      • Number.POSITIVE_INFINTY
    • 负无穷
      • -Infinity
      • Number.NEGATIVE_INFINITY
    • 缺陷
      • 无法参与下一次计算
    • 检测方法,用isFinite
      • 超出范围 false
      • 合法范围true

        NaN

含义

  • Not a Number
  • 非数值

特点

  • 任何涉及NaN的操作都将返回NaN
  • NaN与任何值值都不相等包括其自身
NaN / 5  // NaN
NaN == Nan // false

检测 isNaN

  • 可以转换为数值,为false
  • 不能转换为数值,为true
isNaN(NaN) // true
isNaN(10) //false
isNaN("10") //false
isNaN("blue") //不能转换为数值 true
isNaN("true") // false

数值转换

有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。Number()可以用于任何数据类型,后面两个函数只能用于把字符串转换成数值。

Number()

Number()的转换规则如下:

  • Boolean转换为数值的时候true转为1,flase转为0;
  • null转换为数值的时候 转换为0
  • undefined转换为数值的时候 转为NaN
  • string转换为数值的时候
    • 如果只包含数字,转为十进制数,前导0被忽略(“011”转为11)
    • 如果包含有效浮点格式,转为浮点数值,忽略前导0
    • 包含有效十六进制格式;相同大小的十六进制整数
    • 空字符串转为0;备注:””是空字符串 “ “这个就不是空字符串了
    • 其他格式字符串NaN
  • Object 调用对象的valueOf()方法,然后依照前面的规则转换返回的值,如果转换的结果是NAN,则调用对应的toString()方法,然后再次依照前面的规则转换返回的字符串值;
console.log(Number("hello word"));//NaN
console.log(Number(""));//0
console.log(Number("000011"));//11
console.log(Number("true"));//NaN
console.log(Number(true));//1

parseInt()

parseInt参数

- 参数1、要解析的字符串
- 参数2、转换时所使用的基数;为了消除在使用parentInt函数时可能导致的格式,第二个参数可以指定要解析的基数,16就是十六进制;一般不传第二个参数
console.log(parseInt("AF"));//NaN,默认十进制解析的
console.log(parseInt("AF",16));//175

parseFloat()

  • 从第一个字符开始解析
  • 遇到无效浮点格式后结束
  • 只有第一个小数点有效
  • 忽略前导0
  • 十六进制始终为0
  • 没有小数点或小数点后全0;转换为整数
parseFloat("1234blue"); //1234
parseFloat("0xA"); //0
parseFloat("22.5"); //22.5
parseFloat("0908.5"); //908.5
parseFloat("2.125e4"); //21250

Boolean

  • true为真,flase为假(false是布尔值,而Flase只是标识符);通常用在if/else的判断语句中(通常还会配合逻辑与&&,逻辑或||来完成)
  • true不一定=1;flase不一定=0;
  • 使用boolean()进行转换;任何数据类型的值调用Boolean()函数,都会返回一个Boolean值;也可以用(!/!!来转换)
数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符 “”空字符串
Number 任何非零数值 0和NaN
Object 任何对象 null
Undefined undefined

Object

定义

一组数据或功能的集合

声明

  • Var o=new Object()//Object后面的()可以省略,但不推荐
  • Var o={}

属性和方法

  • constructor:保存用于创建当前对象的函数,构造函数就是Object()
  • HasOwnProperty(propertyName) 检测给定输定在当前对象实例中是否存在(而不是实例的原型中)
  • isPrototypeOf(object) :检测传入的对象是否是另一个对象的原型(而不是在实例中);
  • propertyIsEnumerable(propertyName);检测给定属性是否能用for-in语句每句来枚举;
  • toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应;
  • toString() 返回对象的字符串表示
  • valueOf() 返回对象的字符串,数值或布尔值表示;通常与toString()的值相同;
  • 在ECMAScript中,Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法;方法的具体原理,后面数据类型和原型链中具体说;
  • BOM/DOM中的对象,都是属于宿主对象,因为他们是由宿主实现提供和定义的,但是ECMAScript不负责定义宿主对象,因此宿主对象可能会也可能不会继承Object;

以上所述就是小编给大家介绍的《JavaScript②数据类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript DOM高级程序设计

JavaScript DOM高级程序设计

Jeffrey Sambells、Aaron Gustafson / 李松峰、李雅雯 / 人民邮电出版社 / 2008-7 / 59.00元

本书注重理论与实践的结合,全面讲述高级的DOM 脚本编程。全书分为3 个部分:第一部分“深入理解DOM 脚本编程”,涉及W3C DOM 规范的各方面,包括非标准的浏览器支持和不支持的内容;第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于实践......一起来看看 《JavaScript DOM高级程序设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具