JavaScript 数据类型
在javascript中,数据类型分为两类:基本数据类型和引用数据类型。javascript中声明变量使用关键字var。
一、基本数据类型
javascrip含有五种基本数据类型:undefined,null,boolean,number和string。
- boolean:布尔,值为
true
或false
- number:数字,值为任何整型会浮点数值
- string:字符串,值为由单引号或双引号括出的单个字符或连续字符(JavaScript不区分字符类型)
- null:空类型,其仅有一个值:null
- undefined:未定义,其仅有一个值:undefined
typeof关键字:由于Javascript中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字,在上面提到的ECMAScript中的5种简单数据类型中(这5种只是数据类型,代表一种数据类型,就想C#中的int,string类型一样),通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
- "boolean" ——如果变量值为布尔类型;
- "number" ——值为数字类型;
- "string" ——值为字符串类型;
- "object" ——对象或者值为null;
- "undefined" ——未申明,或者变量的值为undefined或者未初始化;
原始类型的值是直接保存在变量中,并可以用 typeof 进行检测。但是 typeof 对 null 的检测是返回 object ,而不是返回 null 。所以检测 null 时,最好用全等于(===),其还能避免强制类型转换。
对于字符串、数字或者布尔值,其都有对应的方法,这些方法来自于对应的原始封装类型:String、Number
和 Boolean
。原始封装类型将被自动创建。例如:
1 var name = "Tom";
2 var char = name.charAt(0);
3 console.log(char); // "T"
在JavaScript引擎中发生的事情:
1 var person = "Tom";
2 var temp = new String(person);
3 var char = temp.charAt(0);
4 temp = null;
5 console.log(char); // "T"
字符串对象的引用在用完之后立即被销毁,所以不能给字符串添加属性,并且instanceof检测对应类型时均返回 false:
1 var person = "Tom";
2 person.age = 21;
3 console.log(person.age); //undefined
4 console.log(person instanceof String); //false
二、引用数据类型
引用类型:保存为对象,实质是指向内存位置的引用,所以不在变量中保存对象。除了自定义的对象,JavaScript提供了多种内建类型。
Object 类型:Object类型是Javascript引用类型的鼻祖了,就跟在C#和Java中是一样的道理,在创建Object类型的实例后可以为其添加属性和方法。
以Object为基础,JavaScript提供的内建类型如图所示:
- Array:数组类型,以数字为索引的一组值的有序列表
- Date:日期和时间类型
- Error:运行期错误类型
- Function:函数类型
- RegExp:正则表达式类型
可以用new来实例化每一个对象,或者用字面量形式来创建对象:
1 var obj = new Object();
2 var person = {
3 name:"Tom",
4 sex:"man",
5 "my age":22
6 };
7 console.log(person.sex); //访问属性
8 console.log(person["my age"]);
9 obj = null; //解除引用
obj并不包含对象实例,而是一个指向内存中实际对象所在位置的指针(或者说引用)。因为typeof对所有非函数的引用类型均返回object,所以需要用instanceof来检测引用类型。
Object对象
对象是一种引用类型,创建对象常见的两种方式:Object构造函数和对象字面量形式:
1 var p1 = {
2 name:"Tom",
3 age:22
4 };
5 var p2 = new Object();
6 p2.name = "Jack";
在JavaScript中,可以随时为对象添加属性:
1 p1.age = 0;
2 p1.sayName = function(){
3 alert(this.name);
4 }
5 p1.sayName(); //"Tom"
检测属性是否存在时,有两种方式:in 和hasOwnProperty(),前者会检测原型属性和自有(实例)属性,后者只检测自有(实例)属性:
1 console.log("age" in p1); //true
2 console.log(p1.hasOwnProperty("age")); //true
3 console.log("toString" in p1); //true
4 console.log(p1.hasOwnProperty("toString")); //false
对象 p1 并没有定义 toString,该属性继承于Object,所以 in 和hasOwnProperty()检测该属性时出现差异.
若要删除一个属性,用delete操作符,用于删除自有属性,不能删除原型属性:
1 p1.toString = function(){
2 console.log("p1对象");
3 };
4 console.log(p1.hasOwnProperty("toString")); //true
5 p1.toString(); //"per1对象"
6 delete p1.toString;
7 console.log(p1.hasOwnProperty("toString")); //false
8 console.log(p1.toString()); //[object Object]
- android https安全连接
- 第二章 正则表达式位置匹配攻略
- 从网络上下载省份城市名称并存入文件然后进行读取省份城市
- android 应用模式之mvp
- Android网络请求框架之Retrofit实践
- iOS 跳转到应用所在的App Store市场
- 第一章 正则表达式字符匹配攻略
- js最新手机号码、电话号码正则表达式
- iOS afnetworking最新版报错 没有AFHTTPRequestOperationManager类了
- Android Service学习之本地服务
- iOS .pch文件的使用
- CountDownTimer说明及使用
- UiTextField对输入的长度进行限制并提示用户还可输入的长度
- Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Canal binlog 日志管理器与GTID简介
- RNA-Seq的Counts和FPKM数据如何转换成TPM?
- Java代码审计基础之反射
- 手把手教你用Python开发“剪刀石头布”小游戏【附源码】
- For语句
- 使用go语言制作dll封装Sprintf函数给VBA使用
- 同事埋了个坑:Insert into select语句把生产服务器炸了
- VBA使用API_01:读取文件
- 从0到1,撸一个IDEA插件,So Easy!
- VBA调用外部对象02:FileSystemObject
- VCS与Verdi的联合仿真
- ADC数据接入到AXI-Steam Interface
- Java面试必问:ThreadLocal终极篇 淦!
- BERT文本摘要
- 【NPM库】- 0x01