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 值能够 ...
随机推荐
- underscore.js源码研究(1)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- Linux巩固记录(4) 运行hadoop 2.7.4自带demo程序验证环境
本节主要使用hadoop自带的程序运行demo来确认环境是否正常 1.首先创建一个input.txt文件,里面任意输入些单词,有部分重复单词 2.将input文件拷贝到hdfs 3.执行hadoop程 ...
- 设计模式《JAVA与模式》之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...
- redis集成相关工具类
package cn.yiyuan.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; i ...
- sql练习(针对Mysql)
创建表: DROP TABLE DEPT; --部门表 CREATE TABLE DEPT( DEPTNO int PRIMARY KEY, DNAME ) , --部门名称 LOC ) ---部门地 ...
- (转) argparse — 解析命令参数和选项
原文地址:https://pythoncaff.com/docs/pymotw/argparse-command-line-option-and-argument-parsing/166 https: ...
- webgl之观察三维空间
在之前的教程中,我们已经接触到了3d的基本应用,而这里,将会继续介绍两种不同的相机,即透视相机和正投影相机:还会学习设置相机的不同参数,这样就可以使场景以不同的角度显示出来. 一.正投影和透视投影概念 ...
- linux使用find和crontab命令定期清理过期文件
crontab 命令 crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具.它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本. crontab 的基本用法 crontab ...
- MySql 高可用架构Atlas
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug ...
- 高可用Hadoop平台-集成Hive HAProxy
1.概述 这篇博客是接着<高可用Hadoop平台>系列讲,本篇博客是为后面用 Hive 来做数据统计做准备的,介绍如何在 Hadoop HA 平台下集成高可用的 Hive 工具,下面我打算 ...