一、开门见山🔥

在ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null

  • ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
  • 谷歌67版本中还出现了一种 bigInt。是指安全存储、操作大整数。

所以:准确来说目前JS数据类型总共有8种

  • Number
  • String
  • Boolean
  • Null
  • Undefined
  • Object
  • Symbol
  • BigInt

按照类型来分有基本数据类型和引用数据类型:

基本数据类型:String、Number、Boolean、Null、Undefined、Symbol、BigInt

引用数据类型:Object【Object是个大类,function函数、array数组、date日期...等都归属于Object】

二、动态数据类型🔥

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型

JavaScript中变量似乎很简单,因为它声明变量只需要一个“var”就可以,不像其他编程语言严格区分了数据类型(int/double/char/boolean...)。这样做也是有好处的,变量可以被赋予任何类型的值,同样也可以给这个变量重新赋予不同类型的值。并不是“一定终身”

var x = 1;        //number类型
var x = 0.1;     //number类型,JS不区分整数值和浮点数值

//现在x由number变成string
var x = "hello world"; //由双引号内文本构成字符串
var x = 'javascript';   //单引号内文本同样可以构成字符串

//现在x由string变成boolean
var x = true;    //true和false作为布尔值

var x = null; 
var x = undefined;  //null和undefined很相似,是特殊的类型

(1)字符串string

字符串是存储字符(比如 "Bill Gates")的变量

字符串可以是引号中的任意文本。可以使用单引号或双引号

  • 使用单引号或者双引号,没有区别
  • 单引号不要嵌套单引号。双引号同理,非要嵌套需要对引号进行转义 \' \"
var str = '孙悟空'; //单引号字符串
var str2 = '猪八戒'; //双引号字符串

其他转义字符:

  • \n 表示换行符
  • \r 表示回车符
  • \t 水平制表符 tab
  • \' 单引号     
  • \" 双引号     
  • \\ 反斜杠 
  • \uXXXX 四位十六进制表示unicode字符串
  • \xXX 两位十六进制表示拉丁字符

字符串拼接:

var str1 = "hello";
var str2 = "world";
var str = str1   str2
console.log(str); //helloworld

(2)数值number

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带

var num1=5.02;     //使用小数点来写
var num2=520;      //不使用小数点来写

//极大或极小的数字可以通过科学(指数)计数法来书写
var y=123e5;      // 12300000
var z=123e-5;     // 0.00123

数值范围:

  • 5e324 ~ 1.7976931348623157e 308
  • 如果超过范围,会表示为 Infinity 或者 -Infinity

特殊的数值NaN:

  • NaN是number类型,是一个数值
  • 特点1:NaN与任何数进行任何运算结果都是NaN
  • 特点2:NaN与任何数都不相等,包括自己

相关函数:

  • isNaN() 判断数据是否是NaN, 是返回true,否则返回false
  • isFinite() 判断数据是否在范围内,在范围内返回true,否则false
//NaN是一个特殊的number,与其他所有值都不相等,包括它自身
console.log(NaN === NaN ); //false

//唯一识别NaN的方法
console.log(isNaN(NaN) );  //true

// 范围:5e324 ~ 1.7976931348623157e 308
var min = 5e324;
var max = 1.7976931348623157e 308;
var a = 1.7976931348623157e 309; 

console.log(min); //Infinity
console.log(max); //1.7976931348623157e 308
console.log(a);   //Infinity
console.log(isFinite(a)); //false(超出范围,不在数值范围内)

(3)布尔boolean

布尔(逻辑)只能有两个值:true 或 false

var x=true;
var y=false;

(4)null和undefined

null 表示没有对象,此处无值

undefined 表示缺少值,本来应该有值但没定义

var x = null;
var y = undefined

(5)symbol

Symbol 函数可以接受一个字符串作为参数,为新创建的 Symbol 提供描述,用来显示在控制台或者作为字符串的时候使用,便于区分

let name = Symbol();
let name2 = Symbol("bb");
console.log(name);  // Symbol()
console.log(typeof name);  // "symbol"
console.log(name,name2); //Symbol() Symbol(bb)
console.log( name === name2); // false

 (6)对象object

对象由花括号分隔。在括号内部,对象的属性以键值对的形式 (name : value) 来定义。属性由逗号分隔

//空格和折行无关紧要。声明可横跨多行
var obj = {
    "name":"张三",
    "age":18
}

(这里键名也可以不用加引号) 

读取对象中属性:

name = obj.name
//或
name = obj['name']

三、基本数据类型与引用数据类型区别🔥

3.1 声明变量时不同的内存分配

  • 基本数据类型由于占据的空间大小固定且较小,会被存储在当中,也就是变量访问的位置
  • 引用数据类型存储在当中,变量访问的其实是一个指针,它指向存储对象的内存地址

3.2 正是因为内存分配不同,在复制变量时结果也不一样

  • 基本数据类型复制后2个变量是独立的,因为是把值拷贝了一份
  • 引用数据类型则是复制了一个指针,2个变量指向的值是该指针所指向的内容,一旦一方修改,另一方也会受到影响🚩
<script type="text/javascript">
    var x = 3;
    var y = x;
    console.log(x,y); //3 3
    // 基本数据类型复制后2个变量是独立的
    x = 5; //修改一方,另一个不受影响
    console.log(x,y); //5 3 
    
    
    var a = [0,1,2,3];
    var b = a;
    console.log(a, b); //(4) [0, 1, 2, 3] (4) [0, 1, 2, 3]
    a[0] = 9
    console.log(a, b); //(4) [9, 1, 2, 3] (4) [9, 1, 2, 3]
</script>

 

结果:

这里明显可以看出b复制了a,改变a数组的值,b数组也跟着改变了。这就是因为当引用数据类型复制的是同一个指针而不是同一个值,指针指向的地址都是相同的,一方修改另一方也会受影响!

(这里涉及了JS的深拷贝和浅拷贝,这里就不再详细赘述,后面会有单独文章进行讲解)

3.3 参数传递不同

  • 基本数据类型把变量里的值传递给参数,之后参数和这个变量互不影响
  • 引用数据类型(这里拿函数举例):虽然函数的参数都是按值传递的,但是引用值传递的值是一个内存地址,实参和形参指向的是同一个对象,所以函数内部对这个参数的修改会体现在外部

数据类型的转换以及检测数据类型的方法会在其他文章单独讲解,为了方便阅读这里就不再详细赘述~

参考链接:

https://www.html.cn/qa/javascript/11619.html

https://www.cnblogs.com/nangezi/p/9049025.html

https://blog.csdn.net/u013592575/article/details/95087953

总结

到此这篇关于JS入门必备之八种数据类型的文章就介绍到这了,更多相关JS 八种数据类型内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

JS入门必备之八种数据类型的更多相关文章

  1. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. amaze ui 的使用详细教程

    这篇文章主要介绍了amaze ui 的使用详细教程,本文通过多种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. swift皮筋弹动发射飞机ios源码

    这是一个款采用swift实现的皮筋弹动发射飞机游戏源码,游戏源码比较详细,大家可以研究学习一下吧。

  4. Swift与Js通过WebView交互

    开发环境:Swfit2.3XCode8.2基础概念jscontext,jscontext是代表JS的执行环境,通过-evaluateScript:方法就可以执行一JS代码JSValue,JSValue封装了JS与ObjC中的对应的类型,以及调用JS的API等JSExport,JSExport是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用Swif

  5. JSCore swift

    如果双方相互引用,会造成循环引用,而导致内存泄露。以上是Jscore的基本使用,比较简单

  6. Swift WKWebView的js调用swift

    最近项目需求,需要用到JavaScriptCore和WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。

  7. Swift WKWebView的swift调用js

    不多说,直接上代码:在html里面要添加的的代码,显示swift传过去的参数:这样就实现了swift给js传参数和调用!

  8. 在 Swift 專案中使用 Javascript:編寫一個將 Markdown 轉為 HTML 的編輯器

    你有強烈的好奇心,希望在你的iOS專案中使用JavaScript。jscontext中的所有值都是JSValue對象,JSValue類用於表示任意類型的JavaScript值。因此,我們既需要寫Swift代碼也要寫JavaScript代碼。此外,我們還會在JavaScript中按照這個類的定義來創建一個對象并對其屬性進行賦值。從Swift中呼叫JavaScript就如介紹中所言,JavaScriptCore中最主要的角色就是jscontext類。一個jscontext對象是位於JavaScript環境和本

  9. swift - WKWebView JS 交互

    本文介绍WKWebView怎么与js交互,至于怎么用WKWebView这里就不介绍了HTML代码APP调JS代码结果JS给APP传参数首先注册你需要监听的js方法名2.继承WKScriptMessageHandler并重写userContentController方法,在该方法里接收JS传来的参数3.结果

  10. swift 开发UIWebView跟JS的交互

    前言作为小白的我,才开始入门IOS,选择了swift来进行入门学习,学习做着公司一个简单的小小项目,该项目需要进行跟H5进行交互,然后我就开始研究了UIWebView的使用,其实基本原理跟Android的一样,因为我是Android开发的,所以就顺水推舟了。))//这里设置你需要加载的地址}overridefuncdidReceiveMemoryWarning(){super.didReceiveMemoryWarning()//disposeofanyresourcesthatcanberecreate

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部