[剖析Javascript原理]1.原生数据类型
一.原生数据类型
JS共有5种原生数据类型:
| Boolean | true或者false |
| String | 字符串,在单引号或者双引号之间(不存在字符类型) |
| Number | 整数或者浮点数 |
| Null | 空 |
| undefined | 未定义(一个变量没有赋值,或者 赋值为 undefined) |
//Boolean
var flag = false; //String
var str = 'Hello';
var str2 = "Hello,World"; //Number
var n1 = 123;
var n2 = 34.534; //Null
var pointer = null; //Undefined
var u = undefined; //直接赋值为undefined var a; //只声明,不赋值
在传统的编程语言中,原生数据类型存在栈中,而引用类型存在堆中,但是JS彻底的抛弃了这种概念,原生数据类型保存在一个叫做变量对象(Variable Object)的对象中,而引用类型则保存在内存中。在对象变量中的原生数据类型,每个都是“独立的”,彼此之间没有任何影响。
var apple1 = 'Red';
var apple2 = apple1; console.log(apple1); //输出 Red
console.log(apple2); //输出 Red apple1 = 'Green'; console.log(apple1); //输出 Green
console.log(apple2); //输出 Red
由以上代码可以看到,跟传统语言一样,它们的赋值只是简单的拷贝。
| 变量对象(Variable Object) | |
| apple1 | Red |
| apple2 | Red |
二、类型判定
判断原生数据类型最好的方法莫过于typeof,除了Null,其他都工作的挺好的
console.log(typeof 456); //number
console.log(typeof 456.32); //number
console.log(typeof 'somestring'); //string
console.log(typeof false); //boolean
console.log(typeof undefined); //undefined
console.log(typeof a); //undefined
console.log(typeof null); //object
typeof null 得到的结果为object,很显然,null表示的是空,空指针的意思,为什么返回object就不得而知。不过判断是否为null可以用如下代码:
var v = null,vv = undefined;
console.log(v === null); //true
console.log(vv === null); //false
显然,我是用的是===而不是==,因为==在比较值钱会进行类型的转换,而===只是进行简单的相等比较。
console.log(5 == '5'); //true
console.log(5 === '5'); // false
console.log(undefined == null); //true
console.log(undefined === null); //false
三.原生方法
null和undefined没有自带的方法,但是要记住:他们虽然有方法,但是它们不是对象(虽然看起来像对象)。
var n = 123;
console.log(n.toFixed(2)); // 123.00
console.log(n.toString()); // '123' var flag = false;
console.log(flag.toString()); // 'false' var str = 'Hello,World';
console.log(str.toUpperCase()); //HELLO,WORLD
下一篇:[剖析Javascript原理]2.引用类型,敬请期待
[剖析Javascript原理]1.原生数据类型的更多相关文章
- 浏览器解析JavaScript原理
1.浏览器解析JavaScript原理特点: 1.跨平台 2.弱类型 javascript 定义的时候不需要定义数据类型,数据类型是根据变量值来确定的. var a = 10; 数字类型 ...
- java系列之 原生数据类型
在我看来,java里面里面除了原生类型不是对象,其他的都是对象.但java是面向对象的语言,很多地方还要要操作对象,所以java会自动把原生类型转为对应的包装类型.这个过程叫自动装箱.有装箱就有拆箱, ...
- JAVA 1.3 (原生数据类型 Primitive Data Type)续
1. 原生数据类型一共有4类8种 >> 整数类型 int表示一个int代表32位 2^32(-2147483648 - 2147483647) >> 字符类型 byte 表示一 ...
- JAVA 1.2(原生数据类型 Primitive Data Type)
1. Java的数据类型分为2类 >> 原生数据类型(primitive data type) >> 引用数据类型(reference data type) 3. 常量和变量 ...
- JavaScript学习10 JS数据类型、强制类型转换和对象属性
JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...
- JavaScript调用App原生代码(iOS、Android)通用解决方案
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来.这个场景应该算是比较完整的一次H5中的 ...
- 理解JavaScript的数值型数据类型
分享一些在JavaScript中遇到的一些实用的技巧. 理解JavaScript的数值型数据类型 JavaScript的数值型数据类型只有一种:number.即不管是整数还是浮点数,JavaScrip ...
- Java中的原生数据类型
Java中的原生数据类型(Primitive DataType)共有8种: 1)整型: 使用int表示(32位).2)字节型: 使用byte表示(从-128到127之间的256个整数).3)短 ...
- JavaScript 基础 (变量声明, 数据类型, 控制语句)
创建: 2017/09/16 更新: 2017/09/24 更改标题 [JavaScript 概要]-> [JavaScript 基础] 完成: 2017/09/25 更新: 2017/10/0 ...
随机推荐
- oracle权限的分配
一.创建 sys: //系统管理员,拥有最高权限 system://本地管理员,次高权限 scott: //普通用户,密码默认为tiger,默认未解锁 二.登陆 sqlplus / as sysd ...
- 简述UITextField的属性和用法
0. enablesReturnKeyAutomatically 默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. 1.borderStyle ...
- 如何将java web项目上线/部署到公网
关于如何将java web上线,部署到公网,让全世界的人都可以访问的问题. 1.在myeclipse中开发好项目,打包成war格式,不会的同学参考以下 http://zhidao.baidu.com/ ...
- DOS下导入dmp文件到Oracle数据库
imp usename/password@SID full=y file= d:\data\xxxx.dmp ignore=y imp system/manager file=bible_db lo ...
- Netty详解
Netty详解 http://blog.csdn.net/suifeng3051/article/category/2161821
- linux(Ubuntu)下mysql字符集完美解决
本文参考: 1. http://www.blogjava.net/wldandan/archive/2007/09/04/142669.html 2. http://chinaapp.sinaapp. ...
- Java多线程并发编程之原子变量与非阻塞同步机制
1.非阻塞算法 非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 -- 例如比较和交换.非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞 ...
- 使用HAProxy、PHP、Redis和MySQL支撑每周10亿请求
在公司的发展中,保证服务器的可扩展性对于扩大企业的市场需要具有重要作用,因此,这对架构师提出了一定的要求.Octivi联合创始人兼软件架构师Antoni Orfin将向你介绍一个非常简单的架构,使用H ...
- Jsoup小Demo
Jsoup小Demo public class JsoupUtil { public void parseWangYi() { Document doc = null; try { //eg1:解析百 ...
- SSH25个命令 + 深入SSH端口转发细节
OpenSSH是SSH连接工具的免费版本.telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃 ...