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:没声明过
JavaScript中七种数据类型·中·一的更多相关文章
- JavaScript的七种数据类型
我知道这个话题网上说法非常多,甚至还有分出什么"Array,Function"之类的阿猫阿狗的类型.今天来整理这个话题的时候,先贴一张MDN官方的说法: 这个分法是对的,也是目前来 ...
- 细说 JavaScript 七种数据类型
在 JavaScript 规范中,共定义了七种数据类型,分为 “基本类型” 和 “引用类型” 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefined ...
- Symbol -- JavaScript 语言的第七种数据类型
ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证 ...
- JavaScript 七种数据类型
在 JavaScript 规范中,共定义了七种数据类型,分为 “基本类型” 和 “引用类型” 两大类,如下所示: 基本类型:String.Number.Boolean.Symbol.Undefined ...
- java中8种数据类型和默认值所占字节数
java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...
- 只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法
七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELECT ...
- 七种数据库中Select Top的使用方法 (只显示数据库的几条记录)
七种数据库中Select Top的使用方法 1. Oracle数据库 SELECT * FROM TABLENAME WHERE ROWNUM <= N 2. Infomix数据库 SELE ...
- 【面试题】JS第七种数据类型Symbol详解
JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...
- ES6 之 第七种数据类型Symbol
概述 为了减少对象的属性名冲突,ES6引入新的原始数据类型Symbol,JS的第七种数据类型. Symbol 能够保证每个属性的名字都是独一无二,这样就能从根本上防止属性名冲突. Symbol 值能够 ...
随机推荐
- GoLang学习控制语句之字符串
Go语言字符串是一种值类型,且值不可变,即创建某个文本后你无法再次修改这个文本的内容:更深入地讲,字符串是字节的定长数组.Go 代码使用 UTF-8 编码(且不能带 BOM),同时标识符支持 Unic ...
- select2插件使用小记
插件官网:https://select2.github.io/examples.html 页面引入: // 页面顶部 <link rel="stylesheet" type= ...
- 在Ubuntu下编译安装nginx
一.安装nginx 1.安装前提 a)epoll,linux内核版本为2.6或者以上 b)gcc编译器,g++编译器 c)pcre库,函数库,支持解析正则表达式 d)zlib库:压缩解压功能 e)op ...
- Vue2.5开发去哪儿网App 搜索功能完成
效果展示: Search.vue: <div class="search-content" ref="search" v-show="keywo ...
- odoo 开发基础 -- 视图之widget
Odoo 中的widget many2many_tags one2many_list selection progressbar selection statusbar handle monetary ...
- CentOS7.x编译安装nginx,实现HTTP2
网站使用HTTP2有助于网站加速及更安全,要配置HTTP2必须满足两个条件:①openssl的版本必须在1.0.2e及以上.②nginx的版本必须在1.9.5以上 一.准备工作 配置HTTP2之前需 ...
- (转)Python3之requests模块
原文:https://www.cnblogs.com/wang-yc/p/5623711.html Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另 ...
- WebFlux基础之响应式编程
上篇文章,我们简单的了解了WebFlux的一些基础与背景,并通过示例来写了一个demo.我们知道WebFlux是响应式的web框架,其特点之一就是可以通过函数式编程方式配置route.另外究竟什么是响 ...
- Mac安装PhoneGap3
Mac安装PhoneGap3第一步需要安装NodeJS,在Mac下有一个.pkg安装包(Mac OS X Installer (.pkg),下载下来一路点击就可以安装成功了.在Terminal控制台输 ...
- j2ee高级开发技术课程第十四周
RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成“cl ...