JavaScript基础——JavaScript数据及数据类型

news2024/12/26 0:00:45

        

JavaScript中数据的分类

        数据是指设备、浏览器可以识别的内容。在JavaScript中,数据可分为基本数据类型(值数据类型)和引用数据类型。

console.log()函数

        浏览器中按下F12或者右击检查,可以打开控制台。

        在JavaScript中,经常利用console.log()在控制台观察数据的输出,检查代码是否执行,变量是否有值等。

typeof

        在JavaScript 中,typeof是一个一元操作符,用于返回一个值的数据类型。当想知道一个变量或表达式的数据类型时,可以使用typeof来获取。

基本数据类型

        JavaScript是一种动态类型语言,它提供了几种基本数据类型,用于存储原始数据,要注意,数据类型是首字母小写的,因为大写的表示的是构造函数,基本数据类型如下表:

数据类型含义
string字符串类型,用于表示文本数据,由16位的UTF-16编码单元组成。
number数字类型,包括整数和浮点数。JavaScript的Number类型是64位浮点数,遵循IEEE 754标准。
boolean表示逻辑实体,只有两个值:truefalse
undefined表示未定义的值。当变量声明了但未被赋值时,默认就是undefined
null表示空值。它表示一个变量没有指向任何对象。
bigInt表示大于2^53 - 1的整数。BigInt可以安全地表示和操作大整数。
symbolES6引入的新类型,表示一个唯一的、不可变的、原始值。

string

         string表示文本数据,用引号(英文状态下的单引号''、双引号""、反单引号``。反单引号在键盘第二列第一个按键)包裹的字符。

        默认情况下,浏览器不能直接识别abc,直接输出会报错ReferenceError: abc is not defined,用引号包裹,'abc',成为字符串后才能被浏览器识别。

        用typeof语句检测,可以发现'abc'是字符串string类型。

number

        number类型就是平时的数字,浏览器可以直接识别

        用typeof语句检测,可以发现123是数字number类型。

boolean

        boolean表示逻辑实体,只有两个值:truefalse

        用typeof语句检测,可以发现truefalse是布尔boolean类型。

undefined

        undefined表示未定义的值。

        用typeof语句检测,可以发现undefinedundefined类型。

        当变量声明了但未被赋值,或者变量不存在时,默认就是undefined

        声明一个变量a,用typeof语句检测,可以发现a是undefined类型。

        未声明变量,直接console.log输出,用typeof语句检测,可以发现a是undefined类型。 

null

        null表示空值。它表示一个变量没有指向任何对象        用typeof语句检测,可以发现nullobject类型。

整体代码

    <script>
        // 1)'a' "a" `a` 字符串
        // console.log(abc); //报错ReferenceError: abc is not defined
        console.log('abc'); // abc
        console.log(typeof abc); // string

        // 2)(0-9)组成的数字
        console.log(123);   // 123
        console.log(typeof 123); // number

        // 3)true false 布尔值
        console.log(true); // true
        console.log(false); // false

        // 4) undefined 未定义 (缺少值)
        console.log(typeof true); // boolean
        console.log(typeof false);  // boolean

        console.log(undefined); // undefined
        console.log(typeof undefined); // undefined

        var a;
        console.log(a); // undefined
        console.log(typeof a);  // undefined

        // 5)null 空值
        console.log(null); // null
        console.log(typeof null);   // object
    </script>

引用数据类型

        引用数据类型存储的是指向数据的引用(内存地址),包括:

数据类型含义
object对象类型,可以包含属性和方法。
array数组类型,是特殊类型的对象,用于存储有序的数据集合。
function函数类型,可以被调用执行一段代码。

object

        在JavaScript中,object是所有其他对象的基类型,它是一个引用数据类型,是以键值对形式出现的数据集合,对象可以包含属性和方法,属性可以是基本数据类型,也可以是其他对象或函数。

对象的创建

        有几种方式可以创建对象:

        对象字面量:使用花括号 {} 来定义对象。

let person = {
    name: "Xiaoming",
    age: 25,
    greet: function() {
        console.log("Hello!");
    }
};

        构造函数:使用函数来创建对象,构造函数通常以大写字母开头。

function Person(name, age) {
    this.name = name;
    this.age = age;
}
let person = new Person("Xiaoming", 25);

        Object 构造函数:使用 new Object() 来创建一个新对象。        

let person = new Object();
person.name = "Xiaoming";
person.age = 25;

        ES6 类:使用 class 关键字定义类,然后创建类的实例。

class Person {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
}
let person = new Person("Xiaoming", 25);

对象的属性和方法

        对象的属性可以是任何数据类型,包括基本数据类型、其他对象或函数。属性可以通过点符号(.)或方括号([])来访问或设置。

console.log(person.name); // 使用点符号访问属性
console.log(person['age']); // 使用方括号访问属性

person.greet(); // 调用对象的方法

array

        在JavaScript中,array是一种特殊的对象,用于存储有序的数据集合。数组中的每个元素可以是任何类型,包括数字、字符串、对象,甚至是函数或其他数组。

数组的特点

  1. 有序:数组中的元素按照特定的顺序排列,可以通过索引访问。
  2. 可变:数组的大小可以动态变化,可以添加或删除元素。
  3. 索引:数组元素可以通过索引访问,索引从0开始。

数组的创建

        数组字面量:使用方括号 [] 来创建数组。

let fruits = ["Apple", "Banana", "Cherry"];

        Array构造函数:使用 new Array() 来创建数组。 

let fruits = new Array("Apple", "Banana", "Cherry");

数组的属性和方法

        属性Array.length:数组元素的数量。

        方法

方法含义
push(element)向数组末尾添加一个或多个元素,并返回新的长度。
pop()移除数组的最后一个元素,并返回该元素。
shift()移除数组的第一个元素,并返回该元素。
unshift(element)在数组的开头添加一个或多个元素,并返回新的长度。
splice(index, howMany, elementN...)添加或删除数组元素。
slice(start, end)返回一个新数组,包含从开始到结束(不包括结束)的数组的一部分。
indexOf(element)返回数组中元素第一次出现的索引,如果未找到则返回-1。
find(callback)返回数组中满足提供的测试函数的第一个元素的值。
map(callback)创建一个新数组,其元素是调用 callback 函数后的返回值。
filter(callback)创建一个新数组,包含通过 callback 函数测试的所有元素。
reduce(callback)将数组中的所有元素从左到右累加,返回累加的结果。

function

        在JavaScript中,function是一种引用数据类型,它允许你定义可执行的代码块。函数可以接收输入(称为参数),执行代码,并且可以返回输出。

函数的创建

        函数声明:使用 function 关键字定义函数。

function greet(name) {
    console.log("Hello, " + name + "!");
}

        函数表达式:将函数赋值给变量。

const greet = function(name) {
    console.log("Hello, " + name + "!");
};

        构造函数:使用 new Function() 创建一个动态函数。

const greet = new Function('name', 'console.log("Hello, " + name + "!");');

        箭头函数(ES6引入):使用 => 语法定义函数。

const greet = (name) => console.log("Hello, " + name + "!");

函数的参数和返回值

        参数:函数可以有零个或多个参数,它们是函数调用时传递给函数的值。

        返回值:使用 return 语句从函数返回一个值。如果没有 return 语句,函数默认返回 undefined

函数的作用域

        函数有自己的局部作用域,其中定义的变量在函数外部是不可见的。

函数的调用

        使用函数名后跟圆括号 () 来调用函数,圆括号内可以包含传递给函数的参数。

函数的方法

call() 和 apply():允许你在特定的作用域中调用函数,并且可以传递参数。

bind():创建一个新的函数,在该函数被调用时,this 被绑定到提供的值。

        

基本数据类型和引用数据类型的区别

        基本数据类型和引用数据类型在JavaScript中是两种不同的数据存储方式。简单数据类型叫做基本数据类型或值类型,复杂类型叫做引用类型。

        基本数据类型(值类型),简单数据类型/基本数据类型,如数字、字符串、布尔值等,在存储变量中存储的是值本身,赋值或函数参数传递时会复制值,通常存储在内存的栈上,操作速度快,但没有方法和属性。

        复杂数据类型(引用数据类型),如对象、数组和函数则存储指向实际数据的内存地址,赋值或函数参数传递时复制的是内存地址的引用,因此多个变量可能指向同一个数据实体,它们存储在堆上,可能涉及更复杂的内存管理,拥有方法和属性,并且可以通过原型链继承特性。

        如图所示,假设有一个基本数据类型number类型的数据,一个引用数据类型object的数据,此时基本数据类型的值20存储在栈,引用数据类型的内存0x11233存储在栈,值存储在堆。

        

基本数据类型和引用数据类型修改值的问题

基本数据类型修改值

        假设现在定义一个变量a值为10,定义一个变量b等于变量a,修改b的值,代码和运行效果如下:

        在进行b的赋值操作时,a和b都开辟了内存空间,b只是得到了a的值,并没有指向a的地址,所以他们之间修改值互相不影响。

        代码:

    <script>
        var a = 10;
        var b = a;
        console.log(b);
        b = 20;
        console.log(a);
        console.log(b);
    </script>

 引用数据类型修改值

        假设现在定义一个数组c,存储一个数据为100,定义一个数组d等于数组c,修改数组d的值,代码和运行效果如下:​​​​​​​ ​​​​​​​​​​​​​​

        在进行d的赋值操作时,d并没有开辟新的内存空间,直接指向了c的地址,所以修改d的值时,c的值也会被修改

        为了避免这种情况,在创建d变量时,也要开辟一片内存空间,指向一个新的引用地址,将两个变量独立,这种思想也叫做拷贝

        假设现在定义一个数组d,开辟一片新的内存空间,定义一个数组d[0]等于数组c[0],修改数组d[0]的值,代码和运行效果如下:​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务通过X-Forwarded-For获取客户端最原始的IP地址

文章目录 引言I 通过转发IP列表获取用户的IP地址II 存储真实IP字段到MDC中2.1 自己存储真实IP字段,方便获取。2.2 feign 传递MDC数据(将MDC中数据传入header)III 处理真实IP(应用)3.1 从MDC获取存储到日志系统中3.2 logback获取MDC数据(IP、追踪码)3.3 打印接口的请求IP引…

教你用python代码写一个中国象棋游戏

编写一个完整的中国象棋游戏是一个复杂的项目&#xff0c;因为它涉及到图形用户界面(GUI)的设计、游戏规则的实现、AI对手的开发等多个方面。不过&#xff0c;我可以提供一个简化的框架和一些基本思路&#xff0c;帮助你开始这个项目。 由于这里不能完整地实现一个图形化的象棋…

三十六、MyBatis-Plus(2)

&#x1f33b;&#x1f33b; 目录 一、CRUD 扩展&#xff08;1)1.1 Insert1.2 主键生成策略1.2.1 源码解释1.2.2 Twitter的snowflake算法 (雪花算法)1.2.3 主键自增&#xff1a;AUTO 我们需要配置主键自增1.2.4 手动输入&#xff1a;INPUT 就需要自己写 id 1.3 Update1.4 自动填…

2024杭电多校第五场

第一题&#xff1a;开关灯 直接暴力找规律。 发现如果n2&#xff08;mod3&#xff09;那么就是2的n-1次方。否则直接是2的n次方。 暴力代码 #include<bits/stdc.h> using namespace std; #define int long longsigned main() {int temp[100];temp[0] 1;for (int i …

SOMEIP_ETS_001:数组长度超过消息长度允许的范围

测试目的&#xff1a; 验证DUT&#xff08;Device Under Test&#xff0c;被测设备&#xff09;在接收到数组长度超过SOME/IP协议允许的最大长度时&#xff0c;是否能够返回错误消息。 描述 本测试用例旨在检查DUT在接收到一个SOME/IP消息时&#xff0c;如果该消息中的数组长…

Java学习:今日成果,明日挑战

阅读指南&#xff1a;[题目] - 精选摘要 题目1.面向对象编程意味着2.以下哪项不是 Java 关键字&#xff1f;3.基础数据类型在堆栈上分配&#xff1f;4.以下代码将导致&#xff1a;5.以下输出是什么 &#xff1f;6.如果我们声明&#xff1a;7.Java 使用按值调用。 以下方法调用传…

S7-1200PLC 和8块欧姆龙温控表MODBUS通信(完整SCL代码)

1、如何提升MODBUS-RTU通信数据的刷新速度 提升MODBUS-RTU通信数据刷新速度的常用方法_modbus rtu通讯慢-CSDN博客文章浏览阅读1.2k次。SMART PLC的MODBUS-RTU通信请参考下面文章链接:【精选】PLC MODBUS通信优化、提高通信效率避免权限冲突(程序+算法描述)-CSDN博客MODBU…

MATLAB预测模型(1)

一、前言 在MATLAB中&#xff0c;解决和预测微分方程通常涉及到使用数值方法&#xff0c;因为许多微分方程的解析解是难以找到的。MATLAB提供了多种函数和工具箱来处理这类问题&#xff0c;其中ode45是最常用的一个&#xff0c;用于求解非刚性微分方程的初值问题。 二、实现 以…

Linux中DHCP服务器配置和管理

文章目录 一、DHCP服务1.1、DHCP的工作流程1.2、DHCP的工作模式1.3、dhcp的主要配置文件 二、安装DHCP服务2.1、更新yum源2.2、安装DHCP服务软件包2.3、配置DHCP服务2.4、启用DHCP服务&#xff08;解决报错&#xff09;2.4.1、查看dhcpd服务的状态和最近的日志条目2.4.2、查看与…

代码随想录27天|贪心

455.分发饼干 代码随想录 第一想法 将孩子胃口值g[i] 按从小到达的顺序排列&#xff0c;饼干尺寸也按照从小到大的顺序去排列。 优先将大尺寸喂给大胃口孩子。如果满足不了胃口那么久试着分给下一个孩子。 要尽量满足更多的孩子&#xff0c;那么大尺寸的饼干就不能喂给小胃口…

PMP–知识卡片--燃起图

燃起图用两条曲线分别绘制随时间的推移、完成的工作量和总工作量的变化情况。它不仅能清晰地展示项目进度&#xff0c;还是对团队成员的一种激励形式。 使用燃起图可以更好地了解进度、范围变更和预期完成时间&#xff0c;它为所有相关方提供了更清晰的进度状态。 燃起图根据工…

抖音豆包大模型AI写作教程

简数采集器支持调用字节跳动抖音的豆包AI大模型API接口&#xff0c;用于对采集的数据进行研究分析&#xff0c;内容写作等。 抖音豆包大模型AI写作使用教程&#xff1a; 目录 1.启用豆包AI大模型API功能 2.设置豆包API处理规则 3.应用API规则处理数据 4.获取AI处理结果 1…

算法 一

时间复杂度 常数操作&#xff1a;和数量无关&#xff0c;每次都是固定时间内完成。 只要高阶项&#xff0c;也不要高阶项的系数。 选择排序、冒泡排序 选择排序&#xff1a;以第一位为起点&#xff0c;每次选择最小的数放在最前面&#xff0c;起点向后挪一位。 冒泡排序&…

冰山的崛起:数据架构的转变

像 Apache Iceberg、Apache Hudi 和 Delta Lake 这样的开放表格式已成为查询处理器的事实标准。然而&#xff0c;最近有消息称 Snowflake 和 Databricks 等查询引擎采用了 Iceberg 的 REST 目录 API&#xff0c;这改变了竞争环境&#xff0c;有利于 Iceberg。 Iceberg的成功不仅…

国内自闭症学校:寻找最适合您孩子的选择

当您的孩子被诊断为自闭症&#xff0c;为他们寻找一所合适的学校就成为了您至关重要的任务。在国内&#xff0c;有各种各样的自闭症学校&#xff0c;每所学校都有其独特的特点和优势。然而&#xff0c;如何在众多的选择中找到最适合您孩子的那一所&#xff0c;并非易事。 您需要…

【数据结构算法经典题目刨析(c语言)】顺序表和链表的区别(图文详解)

&#x1f493; 博客主页&#xff1a;C-SDN花园GGbond ⏩ 文章专栏&#xff1a;数据结构经典题目刨析(c语言) 目录 顺序表和链表的区别 一、底层存储空间 二、插入和删除操作 三、随机访问 四、空间利用率 五、应用场景 六、高速缓存 为什么顺序表的缓存利用率高于链表呢…

windows 文件夹下的文件名称全部输入到txt文件中(已解决)

打开cmd 命令行&#xff0c;记住一定是cmd命令行 进入cmd 目前在C盘&#xff0c;跳转D盘&#xff0c;输入d:。 d: 回车&#xff1b; 在输入或者粘贴你的目的路径 我的是 D:\opencv****\build\x64\vc14\lib&#xff0c;回车进入目的路径。 然后 再输入&#xff1a;dir /b &…

windows环境下安装docker与jenkins进行单机简易安装

CI/CD流水线简易实战 技术工具: Git Jenkins Docker Git Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何规模的项目。 GitHub是在线的基于Git的代码托管服务。GitHub于2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。这两种账户都…

包装类(String、StringBuffer、StringBuilder) 重点

包装类&#xff08;Wrapper Class&#xff09;是Java中的一个重要概念&#xff0c;它们是用于将基本数据类型&#xff08;如int, char, double等&#xff09;封装成对象的类。使用包装类的主要目的是为了能够更好地与Java的集合框架&#xff08;如ArrayList、HashMap等&#xf…

Modelsim仿真之VCD文件详解

目录 一、前言 二、VCD文件格式 2.1 头部 2.2 变量定义 ​ 2.3 值打印 2.4 值变化部分 2.5 VCD文件示例 三、VCD文件生成 3.1 工程代码 3.2 modelsim操作 3.3 VCD结果查看 3.4 VCD类型2 四、参考资料 一、前言 ​VCD&#xff08;Value change dump&#xff09;…