08 JavaScript学习:数据类型

JavaScript 数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。

引用数据类型(对象类型):对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

在这里插入图片描述

JavaScript 拥有动态类型

JavaScript 是一种动态类型的语言,这意味着在运行时可以改变变量的数据类型。在 JavaScript 中,变量的数据类型是在运行时确定的,而不是在编译时确定的。

举个例子:

let x = 10; // x 是一个数字类型的变量
console.log(typeof x); // 输出 "number"

x = "Hello"; // 现在 x 是一个字符串类型的变量
console.log(typeof x); // 输出 "string"

在上面的例子中,变量 x 首先被赋值为一个数字,然后又被赋值为一个字符串,这种灵活性是动态类型语言的特点之一。由于 JavaScript 是动态类型的语言,变量的数据类型可以随时改变,这使得 JavaScript 在某些情况下更加灵活,但也可能导致一些类型错误。

动态类型的特性使得 JavaScript 在编写代码时更加灵活,但也需要开发人员注意变量的数据类型,以避免潜在的类型错误。因此,在编写 JavaScript 代码时,建议注重变量的数据类型,以确保代码的可靠性和稳定性。

JavaScript 字符串

在 JavaScript 中,字符串是一种表示文本数据的数据类型。字符串可以包含字母、数字、特殊字符等,用单引号(')或双引号(")括起来表示。以下是一些关于 JavaScript 字符串的常见操作:

  • 创建字符串
let str1 = 'Hello'; // 使用单引号创建字符串
let str2 = "World"; // 使用双引号创建字符串

JavaScript 的字符串是不可变的,也就是说一旦字符串被创建,它的值就不能被改变。因此,对字符串的操作通常会返回一个新的字符串。

JavaScript 数字

在 JavaScript 中,数字是一种基本的数据类型,用于表示数值。JavaScript 中的数字可以是整数或浮点数(带有小数点的数),并且没有区分整数和浮点数的类型。

以下是关于 JavaScript 数字的一些概念和声明方法:

  1. 整数和浮点数

    let integerNumber = 10; // 整数
    let floatNumber = 3.14; // 浮点数
    
  2. 科学计数法
    JavaScript 中的数字也可以使用科学计数法表示。

    let scientificNumber = 2.5e6; // 2.5 * 10^6,即 2500000
    
  3. NaN
    NaN 表示一个非数字值,当某个操作无法返回有效的数值时会返回 NaN。

    let result = 10 / "apple"; // 结果为 NaN
    
  4. Infinity
    Infinity 表示正无穷大,当一个数除以 0 时会返回 Infinity。

    let positiveInfinity = Infinity; // 正无穷大
    
  5. 数字声明
    可以使用 varletconst 关键字来声明数字变量。

    var x = 10;
    let y = 3.14;
    const PI = 3.14159;
    
  6. 数字方法
    JavaScript 提供了一些内置方法来操作数字,例如 toFixed()parseInt()parseFloat() 等。

    let num = 3.14159;
    let roundedNum = num.toFixed(2); // 将数字四舍五入为两位小数,结果为 "3.14"
    

通过以上概念和声明方法,可以在 JavaScript 中轻松地处理各种数值计算和操作。数字在编程中是非常常见的数据类型,对数字的理解和使用是编程过程中的基础之一。

JavaScript 布尔

在 JavaScript 中,布尔(Boolean)是一种基本的数据类型,用于表示逻辑值。布尔类型只有两个取值:true(真)和false(假)。布尔类型通常用于条件判断和逻辑运算。

以下是关于 JavaScript 布尔的一些概念和声明方法:

  1. 布尔取值

    • true:表示逻辑真。
    • false:表示逻辑假。
  2. 布尔声明
    可以使用 varletconst 关键字来声明布尔变量。

    let isTrue = true;
    let isFalse = false;
    

    布尔类型在 JavaScript 中是非常重要的,它在条件判断、逻辑运算等方面起着关键作用。通过布尔类型的灵活运用,可以实现复杂的逻辑控制和条件判断,使得代码更加灵活和可读。

JavaScript 数组

在 JavaScript 中,数组是一种用于存储多个值的有序集合。数组可以包含任意类型的数据,包括数字、字符串、对象、函数等。以下是一些关于 JavaScript 数组声明的方法:

  1. 使用数组字面量
    使用方括号([])来声明一个数组,并在方括号内用逗号分隔各个元素。

    let numbers = [1, 2, 3, 4, 5]; // 包含数字的数组
    let fruits = ['apple', 'banana', 'orange']; // 包含字符串的数组
    let mixedArray = [1, 'hello', true]; // 包含不同类型的元素的数组
    
  2. 使用 new Array() 构造函数
    可以使用 new Array() 构造函数来创建一个空数组或指定长度的数组。

    let emptyArray = new Array(); // 创建一个空数组
    let arrayWithLength = new Array(3); // 创建一个长度为 3 的数组
    
  3. 访问数组元素
    可以使用索引(从 0 开始)来访问数组中的元素。

    console.log(numbers[0]); // 输出数组 numbers 中第一个元素的值
    

JavaScript 对象

在 JavaScript 中,对象(Object)是一种复合数据类型,用于存储键值对(properties)。对象可以包含多个属性,每个属性由一个键(key)和一个值(value)组成。以下是关于 JavaScript 对象的一些重要概念和声明方法:

  1. 对象声明
    可以使用对象字面量({})来声明一个对象,属性之间用逗号分隔。

    let person = {
        name: 'Alice',
        age: 30,
        city: 'New York'
    };
    
  2. 访问对象属性
    可以使用点号(.)或方括号([])来访问对象的属性。

    console.log(person.name); // 使用点号访问属性
    console.log(person['age']); // 使用方括号访问属性
    
  3. 修改对象属性
    可以通过赋值操作来修改对象的属性。

    person.age = 31; // 修改 age 属性的值为 31
    
  4. 添加新属性
    可以通过赋值操作来添加新的属性到对象中。

    person.gender = 'female'; // 添加一个新的属性 gender 到对象中
    
  5. 嵌套对象
    对象可以包含其他对象作为属性,形成嵌套结构。

    let car = {
        make: 'Toyota',
        model: 'Camry',
        owner: {
            name: 'Bob',
            age: 40
        }
    };
    
  6. 对象方法
    对象的属性也可以是函数,称为对象方法。

    let person = {
        name: 'Alice',
        sayHello: function() {
            console.log('Hello, my name is ' + this.name);
        }
    };
    person.sayHello(); // 调用对象方法
    

JavaScript 中的对象是非常灵活和强大的数据结构,可以用来表示复杂的数据关系和结构。通过对象的属性和方法,可以实现丰富的功能和逻辑。对于前端开发来说,对象在处理数据和交互中扮演着重要的角色。

Undefined 和 Null

在 JavaScript 中,undefinednull 都是表示“无值”的特殊值,但它们之间有一些微妙的区别。

  1. undefined

    • undefined 表示一个变量已经声明但尚未赋值,或者访问对象属性时属性不存在的情况。

    • 当一个变量被声明但没有赋予初始值时,它的默认值就是 undefined

    • 例如:

      let x;
      console.log(x); // 输出 undefined
      
  2. null

    • null 表示一个变量被明确赋值为“空值”或“无值”。

    • 通常用来表示变量的空状态,与 undefined 不同,null 是一个被赋予的值。

    • 例如:

      let y = null;
      console.log(y); // 输出 null
      
  3. 区别

    • undefined 是 JavaScript 的原始值之一,表示“未定义”。
    • null 也是 JavaScript 的原始值之一,表示“空值”或“无值”。
    • undefined 是变量的默认值,而 null 是一种特殊的赋值。
    • 在条件判断中,undefined 会被当做 false 处理,而 null 不会。
  4. 使用场景

    • undefined 通常表示某个变量未初始化,或者函数没有返回值。
    • null 通常用来表示一个对象不含有值,或者用来重置对象的值为“无值”。

undefinednull 都表示“无值”,但是它们的含义和使用场景略有不同。在编程中,正确地理解和使用这两个值是很重要的,可以避免一些潜在的错误和逻辑混乱。

new 声明变量类型

在这里插入图片描述

在 JavaScript 中,new 关键字通常用于创建一个新的实例对象,特别是在使用构造函数创建对象实例时。下面是一些常见的用法:

  1. 使用 new 关键字创建对象实例

    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    
    let person1 = new Person('Alice', 30);
    let person2 = new Person('Bob', 25);
    
  2. new 运算符
    new 运算符用于实例化一个构造函数,创建一个新的对象实例。

    let obj = new Object(); // 创建一个空对象
    let date = new Date(); // 创建一个表示当前时间的 Date 对象
    
  3. 构造函数
    构造函数是一个用来创建对象的函数,通过 new 关键字调用构造函数会返回一个新的对象实例。

    function Car(make, model) {
        this.make = make;
        this.model = model;
    }
    
    let car = new Car('Toyota', 'Camry');
    
  4. new 关键字和原型链
    在使用 new 关键字创建对象实例时,对象会继承构造函数的原型链上的属性和方法。

    function Animal(name) {
        this.name = name;
    }
    
    Animal.prototype.sayHello = function() {
        console.log('Hello, my name is ' + this.name);
    };
    
    let dog = new Animal('Buddy');
    dog.sayHello(); // 输出 "Hello, my name is Buddy"
    

new 关键字在 JavaScript 中用于创建对象实例,特别是在使用构造函数时非常常见。通过 new 关键字,可以轻松地实例化对象并访问构造函数的属性和方法。

关注我,不迷路,共学习,同进步

关注我,不迷路,共学习,同进步

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/559443.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

插入排序与希尔排序

文章目录 插入排序配图详解核心思想核心代码 源代码运行结果 希尔排序实现逻辑源代码运行结果 插入排序 插入排序在少量数据中是一个高效的算法,你可以想象在打牌的时候,左手是已经整理好的牌,右手是正在抓取的牌。 配图详解 对一组数据 5&…

手机号码空号过滤API:有效验证和过滤无效电话号码

随着移动通信技术的发展,手机号码成为人们日常生活和工作中不可或缺的一部分。然而,随着时间的推移,一些手机号码可能会变成空号,这给企业在进行电话营销和数据分析时带来了一定的困扰。为了解决这个问题,挖数据平台提…

武汉星起航:引领跨境电商新潮流,一站式孵化助力卖家轻松出海

武汉星起航电子商务有限公司,作为跨境电商领域的领军者,始终秉持“走出去”的战略理念,依托自营店铺的丰富经验和对跨境电商资源的深度整合,成功打造了一站式卖家孵化体系。这一体系集开店策划、运营教学、资源服务于一体&#xf…

Linux:常用软件、工具和周边知识介绍

上次也是结束了权限相关的知识:Linux:权限相关知识详解 文章目录 1.yum-管理软件包的工具1.1基本介绍1.2yum的使用1.3yum的周边生态1.4软件包介绍 2.vim-多模式的文本编辑器2.1基本介绍2.2基本模式介绍2.2.1命令模式(Normal mode)…

SpringBoot项目如何实现邮件发送

文章目录 1. 开启邮箱SMTP服务2. 导入pom依赖3. 在配置文件中添加邮箱配置3. 封装EmailTask类4. 写测试类 1. 开启邮箱SMTP服务 这里以163邮箱为例,点击设置——更多设置——POP3/SMTP/IMAP——开启服务 根据提示开启服务之后会得到一个授权码,只显示一…

七牛云配置,图片上传、查看的使用(备忘)

修改配置文档 修改新创建的空间的地区名 访问设置为 公开,不然会有访问时间限制 检查 上传和查看的链接是否正确。

Llama3本地部署实现模型对话

1. 从github下载目录文件 https://github.com/meta-llama/llama3 使用git下载或者直接从github项目地址下载压缩包文件 git clone https://github.com/meta-llama/llama3.git2.申请模型下载链接 到Meta Llama website填写表格申请,国家貌似得填写外国,组织随便填写即可 3.…

STL容器搜索:当直接访问STL容器时,如何执行有效和正确的搜索?

掌握STL容器搜索技巧:在C中实现高效和准确的数据访问 一、简介二、std::vector, std::deque, std::list三、std::map, std::multimap, std::set, std::multiset四、std::string六、总结 一、简介 本文主要了解如何在直接访问c容器时高效地进行搜索。在STL容器中搜索&#xff0…

【PostgreSQL里insert on conflict do操作时的冲突报错分析】

最近在巡检PostgreSQL的数据库的时候,发现部分数据库里存在大量的如下报错 ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained val…

如何在CentOS本地搭建DataEase数据分析服务并实现远程查看数据分析

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务…

信息系统项目管理师0056:数据管理(4信息系统管理—4.2管理要点—4.2.1数据管理)

点击查看专栏目录 文章目录 4.2管理要点4.2.1数据管理1.数据战略2.数据治理3.数据架构4.数据应用5.数据安全6.数据质量7.数据标准8.数据生存周期9.理论框架与成熟度4.2管理要点 信息系统管理涉及系统准备、设计、实施、运行等活动的众多方面,

基于SpringBoot的在线五子连珠的设计与实现,前端采用vue框架;后端采用SpringBoot,mybatis

介绍 基于SpringBoot的在线五子连珠的设计与实现,主要是设计一款五子棋游戏,涉及登录注册的功能,人机对战、联机对战和积分排行榜的功能。其中人机对战中,电脑采用的是采用了一种基于局面分析的评分算法来确定机器人的下一步落子…

java 红黑树

01.红黑树的定义: 每一个结点有五个属性:

书生浦语大模型实战训练营--第二期第六节--Lagent AgentLego 智能体应用搭建--homework

一、基础作业 1.完成 Lagent Web Demo 使用,并在作业中上传截图 根据以下命令启动成功! 2.完成 AgentLego 直接使用部分,并在作业中上传截图 这是原图 使用AgentLego进行自动目标检测后,很明显图中的物体已经被识别出来了 二、…

ElasticSearch可视化工具:kibana + elasticsearch-head

kibana 下载 地址:https://www.elastic.co/cn/downloads/kibana 下载别的版本:https://www.elastic.co/cn/downloads/past-releases#kibana 将Kibana安装包解压缩 进入config目录,在kibana.yml中添加es服务器地址。(如果之前没…

Latex使用algoritm2e出现的错误汇总(updating)

1. return 和 end在一行 解决办法是:\Return{}中必须使用latex公式,如:\Return{$S_b$}

uniapp全局监听分享朋友圈或朋友

把大象装进冰箱需要几步: 1、创建shart.js文件 export default{data(){return {//设置默认的分享参数//如果页面不设置share,就触发这个默认的分享share:{title:标题,path:/pages/index/index,imageUrl:图片,desc:描述,content:内容}}},onLoad(){let ro…

Android的一些总结

先打开自定义的app显示欢迎->消失 打开桌面应用程序->在桌面应用程序中也要能一键启动打开视频播放的app 桌面应用程序广播接收者进行监听,然后打开服务/activity是可行的。 ########################## 日志,调试: Usb 无线 串口…

机器学习预测汽车油耗效率 MPG

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接:https://pan.baidu.com/s/1KeIJykbcVpsfEk0xjhiICA?pwd30oe 提取码:30oe --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

华为认证实验配置(10): 实现VLAN间通信

传统交换二层组网中,默认所有网络都处于同一个广播域,这带了诸多问题。VLAN技术的提出,满足了二层组网隔离广播域需求,使得属于不同VLAN的网络无法互访,但不同VLAN之间又存在着相互访问的需求 重点:使用路…
最新文章