前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)

简介: 本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。

一、数据类型分类

1.1、数据类型分类

JavaScript的数据类型为弱类型,即最开始的时候并不知道变量是什么类型,必须通过后面的值才能知道。
JavaScript的数据类型分为简单数据类型(也称为基本数据类型)和复杂数据类型(也称为引用数据类型)。
基本数据类型有:Number、String、Boolean、Undefined、Null
复杂数据类型有:Object

基本数据类型

1.2、typeof 操作符

语法:typeof(变量) / typeof 变量。
例1:typeof的使用

var num1 = 10;
console.log(typeof(num1), typeof num1);//number number

可以查看这篇文章:
最简单的方式理解typeof、instanceof、hasOwnProperty

1.3、Number 类型
Number类型即数值类型,主要作用于存储数据,参与数学运算。
例1:Number 类型即数值、数字

// 1.1 普通整数和小数
var num1 = 10;
var num2 = 2.5;
console.log(typeof(num1), typeof num2);

// 1.2 负值
var num3 = -0.2;
console.log(num3, typeof num3);

// 1.3 八进制,以0开头并且没有超过8的值,则为8进制
var num4 = 070;
console.log(num4, typeof num4); // 56 number

// 1.4 十六进制,0x开头,则为16进制
var num5 = 0x10;
console.log(num5, typeof num5); //15 number

Number类型即数值类型,即数字,包括整数、小数、八进制、十六进制等,除这些简单的数字以外,在Number类型中还有几个比较特殊的情况。

例2:特殊的Number类型

//1.1 NaN  not a number  算术运算不能得到正常数字都会返回NaN
var num5 = 'a' - 5;
console.log(num5, typeof num5); // NaN number

// 1.2 无穷大
var num6 = 1 / 0;
console.log(num6, typeof num6); // Infinity number

// 1.3 小数相加 会有一点偏差  
console.log(0.1+0.2); // 0.30000000000000004

在上面特殊的Number类型中,需要特别注意的就是NaN,算术运算不能得到正常数字都会返回NaN,并且任意两个NaN都是不相等的。

1.4、String 类型
String类型即字符串类型,是用引号引起来的数据,单双引号都可以,“web” 或’w’。
例1:string 类型

var str1 = 'abc';
var str2 = "123";
console.log(typeof str1,typeof str2); //string string

需要注意的是,除了引号引起来的是字符串以外,所有我们从input表单中获取的用户输入的内容都是字符串,哪怕输入的是数字。
例2:

oBut.onclick = function () {
   
    var value = oIn.value;
    console.log(typeof value); // string
}

字符串是用来数据存储使用频率非常高的一个类型,其中最基本的操作有:

  • 字符串.length : 获取当前字符串的长度
  • 字符串.charAt(下标):在字符串中获取对应下标的字符,下标从0开始
  • 字符串[下标]:在字符串中获取对应下标的字符,ie7及以下获取到undefined

例3:

var str = "abc";
// 字符串.length属性  获取字符串的长度,从1开始数
console.log(str.length); //3

// 字符串.charAt(下标)  获取字符串中某一位字符  下标(位置):从0开始
console.log(str2.charAt(0)); //a
console.log(str2[0]); // IE7及以下返回undefined

1.5、Boolean 类型
例1:Boolean 类型只有真和假,即 true、false

var bool1 = true;
var bool2 = false;
console.log(typeof bool1);
console.log(10>20); //false
if(10>20){
    // if的小括号里面,会自动转换成boolean类型
alert(true)
};

除了通过比较能得到Boolean的值以外,还有一个口诀来判断条件是否为真:“非0为真,非空为真”即0为假,其他数字为真,空字符串为假,其他为真。

1.6、null 与 undefined
例1:null 表示值为空,undefined 表示变量没有初始化,值的空缺。

// null 表示值为空
var nu = null;
console.log(nu, typeof nu); // null 'object'

// undefined
var def; // 变量没有初始化,表示值的空缺
console.log(def, typeof def); // undefined 'undefined'

null: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。
undefined:Undefined类型,当声明了一个变量未初始化时,得到的就是undefined。

区别:
null是JavaScript的关键字,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是JavaScript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。: Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “object”,所以你可以认为它是一个特殊的对象值。
undefined:Undefined类型,当声明了一个变量未初始化时,得到的就是undefined。
null是JavaScript的关键字,它是一个空对象指针,和其它语言一样都是代表“空值”,不过 undefined 却是JavaScript才有的。undefined是在ECMAScript第三版引入的,为了区分空指针对象和未初始化的变量,它是一个预定义的全局变量。没有返回值的函数返回为undefined,没有实参的形参也是undefined。

复杂数据类型

1.7、Object
对象类型object:具体的东西(事物)都可以看作对象,也就是说万物皆对象(从页面当中获取的所有元素(标签)都是对象类型)。
例1:

console.log(typeof document); // object
console.log(typeof window); // object

var obj = new Object();
console.log(typeof obj); // object

var obj1={
   
name:"LiuQing",
age:18,
city:"北京"
};
// 获取属性值
console.log(obj1.name); // LiuQing
console.log(obj1['age']); // 18
console.log(typeof obj1); // object

声明object对象类型有两种方式,一种通过关键字new实例化对象(var obj=new Object()),还有一种通过字面量的形式声明对象(var obj1={})。在object数据类型中,存储值时,通过键值对的形式存储(name:”LiuQing”)其中name叫做键名(属性名),”LiuQing”叫做键值(属性值)。

1.8、函数 function
函数主要用于存储代码块,在需要的时候调用,因此一个完整的函数过程有两步,存和用。
例2:

函数是用来存储代码块的,在需要的时候调用
// 声明函数:function 函数名(){ 代码块 }
function fun() {
   
console.log("函数");
}
console.log(typeof fun); // function
fun(); // 调用函数

1.9、数组 array
数组可以将多个数据存储在一起,js 里面的数组项没有类型限制,一个数组当中可以存放任意类型的数据。
例4:

// 数组 可以存储任意类型的数据,如下,数组中放了对象和数组
var arr = [1,'fd',{
   'name':'fd'},[23,4]];
console.log(arr, typeof arr);
console.log(arr.length); // 获取数组中元素的个数
console.log(arr[2]); // 通过下标获取数组某一项,下标从 0 开始

2.0、typeof 返回值

  • 所有的数据类型通过typeof得到的类型有:
  • 如果这个值未定义,返回----“undefined”
  • 如果这个值是布尔值,返回----“boolean”
  • 如果这个值是字符串,返回----“string”
  • 如果这个值是数值,返回----“number”
  • 如果这个值是对象或null,返回----“object”
  • 如果这个值是函数,返回----“function”
目录
相关文章
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
229 2
|
30天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
37 0
|
1月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
65 41
|
4天前
|
资源调度 前端开发 JavaScript
vite3+vue3 实现前端部署加密混淆 javascript-obfuscator
【11月更文挑战第10天】本文介绍了在 Vite 3 + Vue 3 项目中使用 `javascript-obfuscator` 实现前端代码加密混淆的详细步骤,包括安装依赖、创建混淆脚本、修改 `package.json` 脚本命令、构建项目并执行混淆,以及在 HTML 文件中引用混淆后的文件。通过这些步骤,可以有效提高代码的安全性。
|
12天前
|
设计模式 前端开发 JavaScript
揭秘!前端大牛们如何巧妙利用JavaScript,打造智能交互体验!
【10月更文挑战第30天】前端开发领域充满了无限可能与创意,JavaScript作为核心语言,凭借强大的功能和灵活性,成为打造智能交互体验的重要工具。本文介绍前端大牛如何利用JavaScript实现平滑滚动、复杂动画、实时数据更新和智能表单验证等效果,展示了JavaScript的多样性和强大能力。
29 4
|
10天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
10天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
16 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
15天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
21 1
|
16天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
15 1
|
25天前
|
前端开发 JavaScript 安全
JavaScript前端开发技术
JavaScript(简称JS)是一种广泛使用的脚本语言,特别在前端开发领域,它几乎成为了网页开发的标配。从简单的表单验证到复杂的单页应用(SPA),JavaScript都扮演着不可或缺的角色。
19 3