JavaScript中七种数据类型·中·一

Standing on Shoulders of Giants;

说到JavaScript里的类型很容易就让人想起 42和"42",分别是string型和number型,但是他们可以直接进行运算。这就是Js里面有趣又让人头疼的问题了。JavaScript会进行==强制类型转换==

下面我们就正式来认识一下JS中的类型吧:

1、内置类型

JavaScript有七种内置类型:

2、类型检测 typeof

1 typeof undefined === 'undefined';//true
2 typeof 'abc' === 'string';//true
3 typeof 123 === 'number';//true
4 typeof true === 'boolean';//true
5 typeof {a:'test'} === 'object';//true
6 typeof Symbol() === 'symbol';//true

一共七种类型,六种都在上面了,还有谁呢?对,还有null。
null 比较特殊,用typeof 判断会出问题

    typeof null === 'object';//true

照理说应该是typeof null 的返回值应该是‘null‘,但是这个bug确实在js语言中客观存在。
如果要判断一个值是否是null,可以用下面的这种方式来检测:

 var a = null;
 if(!a&&typeof a === 'object'){
     //此刻说明a的值是null

 }

null是“假值”,也是唯一一个用typeof检测会返回‘object’的基本类型值。
另两种种特殊情况是function和array

typeof function a(){} === 'function';//true
typeof [1,2,3] === 'object';//object

函数和数组都是对象的内置类型,算是object的‘子类型’。
函数可以拥有属性,例如a.length;//0;

2、值和类型

JavaScritp中的变量是没有类型的,只有值才有。变量可以随时持有任何类型的值
语言引擎不要求变量总是持有与其初始值同类型的值。一个变量可以先被赋值为字符串后重新赋值为数字,不会报错。

3、undefined和undeclared

变量在未持有值的时候为undefined,此时typeof 返回 ‘ undefined ‘;
已在作用域中声明但没有赋值的变量返回值是undefined,在作用域中没声明过的变量返回值是:==ReferenceError: 变量名 is not defined==

 var a ;
 a;//undefined
 b;//ReferenceError : b is not defined

这里有一个要注意的点:typeof 对于未声明过和声明过未赋值的变量返回结果都是‘undefined’

4、如何在程序中检查变量是否已存在

if(typeof myTest !== 'undefined'){
    console.log('myTest已经存在')
}
if(typeof atob === 'undefined'){
    atob = function(){}
}

还可以用‘依赖注入’设计模式,就是将依赖通过参数显示地传递到函数中:

function doSomethingCool(FeatureXyz){
    var helper = FeatureXyz || function(){}
    var val = helper();
}

5、总结:

1、JavaScript中其中内置类型:null、undefined、string、number、boolean、object、symbol
2、变量没有类型,但它们持有的值有类型,类型定义了值的行为特征
3、undefined:声明过未赋值变量;undeclared:没声明过

原文地址:https://www.cnblogs.com/angfl/p/10265787.html

时间: 2024-11-13 08:15:55

JavaScript中七种数据类型·中·一的相关文章

JavaScript的七种数据类型

我知道这个话题网上说法非常多,甚至还有分出什么"Array,Function"之类的阿猫阿狗的类型.今天来整理这个话题的时候,先贴一张MDN官方的说法: 这个分法是对的,也是目前来讲最正确的.一共就七种.即(Number,Boolean,String,Null,Undefiend,Symbol,Object),之所以用英文小写,是因为typeof输出的就是英文小写. JavaScript的数据类型,可以分为两种:一种是值类型(或者叫原始类型.基本类型),还有一种是引用类型(或者叫对象类

JavaScript 七种数据类型

在 JavaScript 规范中,共定义了七种数据类型,分为 "基本类型" 和 "引用类型" 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefined.Null 引用类型:Object 下面将详细介绍这七种数据类型的一些特性. 1.String 类型 String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串 . 1.1 存储结构 由于计算机只能处理数字,如果要处理文本,就必须先把文

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT FIRST N * FROM TABLENAME 3. DB2数据库 SELECT * FROM (SELECT * ROW_NUMBER() OVER({ORDER BY COL1 DESC}) AS ROWNUM FROM TABLENAME) WHERE ROWNUM <= N 或者 SELEC

JavaScript中七种函数调用方式及对应 this 的含义

http://blog.sina.com.cn/s/blog_621f1e120100rj21.html this 在 JavaScript 开发中占有相当重要的地位,不过很多人对this这个东西都感觉到琢磨不透.要真正理解JavaScript的函数机制,就非常有必要搞清楚this到底是怎么回事. 函数调用方式不同,this 含义也跟着不同.JavaScript语言中有七种调用函数方式: 第一种:调用方法var obj = {    method: function() { alert(this

面试中经常问到的Redis七种数据类型,你都真正了解吗?

前言 Redis不是一个简单的键值对存储,它实际上是一个支持各种类型数据结构的存储.在传统的键值存储中,是将字符串键关联到字符串值,但是在Redis中,这些值不仅限于简单的字符串,还可以支持更复杂的数据结构.下面就是Redis支持的数据结构: 字符串(String):二进制安全字符串. 列表(List):根据插入顺序排序的字符串元素列表,基于链表实现. 集合(Set):唯一的乱序的字符串元素的集合. 有序集合(Sorted Set):与集合类似,但是每个字符串元素都与一个称为score的数字相关

python中几种数据类型常用的方法

''' python几种数据类型常用方法: 列表 增加:append,insert,extend 删除:remove,pop,clear 修改: 查询:index,count 元组 查询:index,count *:解包操作 集合 增加:add 删除:pop,clear,remove 字典 增加:字典['键'] = 值 删除:pop,popitem,clear 修改:update(dict) 查询:get,keys,items,values,setdefault:有对应的键则返回对应的值,没有则

javascript中几种数据类型。

1,基本类型:字符串类型(string),数字类型(number),布尔类型(boolean)2,复杂类型:数组类型(array),对象类型(object),函数类型(function),正则类型(regexp)3,空类型:undefine  和 null 字符串转数字类型方法:1,加减乘除取余 接字符串 隐士转换 2,parseInt(字符串)  转为整数 3,parseFloat(字符串)  转为浮点数类型 4,number  (字符串) 数字转字符串类型方法:1,.toString() 2

javascript 的七种基本数据类型

六种基本数据类型 undefined null string boolean number symbol(ES6) 一种引用类型 Object 为什么要引入 Symbol? ES5的对象中的属性名是字符串,容易造成属性名的冲突,如果有一种机制,保证每个属性的名字都是独一无二的,就可以从根本上防止属性名的冲突. Symbol怎么生成? symbol值通过Symbol函数生成,生成的symbol是一个类似于字符串的原始类型的值 const sym = Symbol(param): // param

redis数据类型四之hash的指令操作(五种数据类型中最重要的一种)

1.老规矩,看看redis官方文档怎么写:         这里说呢,hashes 这种数据类型容易代表对象,实际上你可以无限制地在 hash 中放给定数量的字段.(除了可用的内存)(其实这个我理解有些模糊,是内存能够满足就可以无限制的放入吗?)所以你可以在应用中多方面地使用它. 我理解的 hash 数据类型是: 就好像是Java中 Map<String, Map<Srtring,String>> 一样,KV模式不变,但是 V 值是一个键值对. 2.hash 数据类型的指令操作: