变量类型
来源:互联网 发布:js皮肤哪个好 编辑:程序博客网 时间:2024/06/01 21:42
JavaScript中有七中内置类型:number(数字)、string(字符串)、boolean(布尔)、null(空值)、undefined(未定义)、object(对象)、symbol(符号,ES6中才有)。
注意:变量没有类型,但它们持有的值有类型。
null 空值
null
属于空值类型。
任何值我们都可以通过typeof来确定它的类型,但是也有特殊情况。
typeof undefined === 'undefined'; // truetypeof true === 'boolean'; //truetypeof 123 === 'number'; // truetypeof 'abcd' === 'string'; // truetypeof [1, 2, 3] === 'object'; //truetypeof Symbol() === 'symbol'; // truetypeof null === 'object'; // true
根据上面这7中类型查看,问题出现了,null属于空值类型,正确来说,typeof null === 'null'
, 为什么typeof 值的类型是object呢? 这就是属于JavaScript的一个bug了,并且存在了20多年,已经无法修复,我们只要记着就好了。
undefined 未定义
undefined
属于未定义类型。
undefined 与 null 的区别
通常情况下我们会将undefined
和 null
混淆, 但是它们传达的意思都差不多,但是也还是有些细微差别。
undefined 值从未赋值null指曾赋过值,但是目前没有值
undefined 与 undeclared
var a;console.log(a); // undefinedconsole.log(b); // ReferenceError: b is not undefined
变量在未持有值的时候为undefined
, 而 undeclared
表示b is not undeclared
, 变量没有被定义。注意:undefined
与 is not undeclared
是两回事儿。
string 字符串
string
属于字符串类型。
在JavaScript中字符串是不可变的。不可变是指字符串的成员函数是不会改变其原来的值,而是会创建一个新的字符窜。
number 数字
JavaScript中只有一种数值类型:number
,包括“整数”和带小数的十进制数。
JavaScript中没有真正意义上的整数,目前只有数字。
定义方式:
var a = 23;var b = 23.4;// 数字前面的0可以省略var c = 0.23;var d = .23;// 小数点最后边的0可以省略var f = 23.0;var g = 23.;
精确度
JavaScript中的浮点数存在一定的精确度。
0.1 + 0.2 === 0.3; // false;
从数学角度说,上例中的返回值改为true,可为什么是false呢?
二进制浮点数中0.1和0.2并不是十分精确,他们相加的结果并非刚好等于0.3,而是一个比较接近0.3 的数字0.30000000000000004, 所以结果为false。
boolean 布尔
boolean
属于布尔类型,确只有两个值true
或者 false
。
转换为false
的情况:
nullundefined0-0''NaNfalse
除了上面这几种情况外,其他都将为true
。
object 对象
object
属于对象类型,对象中主要包括数组、函数、自定义对象等。
在JavaScript中函数是属于object
类型,是object
的一个子类型。
typeof function a() {...} === 'object'; //true
下面这种特殊情况注意:
var a = {};var b = {};a === b; // false
虽然a、b都是空对象,但是两个对象并不是同一个对象,所以不相等。
symbol 符号
symbol
属于符号类型,ES6新增的基本数据类型。符号是具有唯一性的特殊值(并非绝对)。用它来命名不容易导致重名。
var mysym = Symbol('my own symbol');mysym; // Symbol('my own symbol')typeof mysym; // symbolvar a = [];a[mysym] = 'foobar';
Symbols和其它基本类型大不一样。
从创建开始就是不可变的。你不能为它设置属性(如果你在严谨模式下尝试,会报类型错误)。它可以作为属性名。这是它的类字符串性质。
var sym = Symbol('3'); 'your symbol is ' + sym; // TypeError: can't convert symbol to string`your symbol is ${sym}`; //TypeError: can't convert symbol to string
你可以通过显示地将symbol转换为一个字符串来避免这个问题,通过String(sym)或者sym.toString()。
- 变量类型
- 变量类型
- 变量类型
- 变量类型
- 变量类型
- 变量类型
- 变量类型
- 变量及变量类型
- Javascript变量之变量类型
- php变量与变量类型
- 基本类型变量和类型变量+基础
- 变量类型与电影类型
- 变量 声明变量 声明变量类型分类
- VC 变量类型
- C语言变量类型
- 隐含类型局部变量
- 变量类型辨析
- 检测变量类型
- 通过继承SecurityManager实现系统退出检查
- 何为"IOE"、"去IOE"
- Java传参练习
- View的事件分发机制总结
- Linux目录结构和常用命令(转载)
- 变量类型
- LUA string库详解
- [codevs1906]最长递增子序列(dp+dinic)
- Docker容器
- mac vim 常用命令
- TF-IDF及其算法
- 写高效的SQL语句
- VS2015 + EF6连接MYSQL
- Puzzle