【修真院WEB小课堂】JS有哪些数据类型和常用方法?

1.背景介绍

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

数据类型是什么

“数据类型”在数据结构中的定义”一个值的集合以及定义在这个值集上的一组操作”。在编程语言中,能够表 示并操作的值的类型称做数据类型。

  • JavaScript 的数据类型,共有六种。分别是:
  • 数值(NUMBER):整数和小数(比如1和1.1)
  • 字符串(STRING):字符组成的文本(比如”HELLO WORLD”)
  • 布尔值(BOOLEAN):TRUE(真)和FALSE(假)两个特定值
  • 对象(OBJECT):各种值组成的集合
  • UNDEFINED:表示”未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • NULL:表示无值,即此处的值就是”无”的状态
  • (ES6新增第七种 Symbol 一种数据类型,它的实例是唯一且不可改变的。类型的值)

2.知识剖析

数值

JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。 该类型的表示方法有两种形式,第一种是整数,第二种为浮点数。整数:可以通过十进制,八进制,十六进制的字面值 来表示。浮点数:就是该数值中必须包含一个小数点,且小数点后必须有一位数字。还有一种特殊的数值,即NaN (非数值 Not a Number)。

字符串

用于表示由零或多个16位的Unicode字符组成的字符序列,即字符串。至于用单引号,还是双引号,在js中还是没有差别 的,记得成对出现。字符串默认只能写在一行内,分成多行将会报错。

布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只 有这两个值。我们这需要注意下,Boolean类型的字面值true和false是区分大小写的。也就是说,True和False(以及其它的 混合大小形式)都不是Boolean值,只是标识符。

对象

Object数据类型,称为对象,是一组数据和功能(函数)的集合。可以用new操作符后跟要创建的对象类型 的名称来创建。也可以用字面量表示法创建。在其中添加不同名(包含空字符串在内的任意字符串)的属性。对象是带有 属性和方法的特殊数据类型,是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

UNDEFINED

undefined表示“未定义”,如果使用的对象属性不存在或者是未声明变量,undefined 值将被返回。 一个未初始化的变量的值就为undefined。

null

null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示 该参数为空。null值表示了一个空对象指针,但是null不等于undefined。 null用来表示空值,即没有对象被呈现,我们可以通过将变量的值设置为 null 来清空变量:

常见问题

null与undefined的区别?如何判断

怎么样判断值的数据类型?

4.解决方案

1.null与undefined的区别?

null与undefined都可以表示“没有”,含义非常相似。 它们区别是这样的:null是一个表示“空”的对象,转为数值的时候为0;undefined是一个表示”此处无定义”的原始值, 转为数值时为NaN。详见demo中返回undefined的典型例子

2.怎么样判断值的数据类型?

使用typeof运算符来进行检测

如果判断的是基本类型,则typeof会尝试得到最基本的类型,比如number,string等等,如果是函数名,那么则返回 function,这里Object,Number,String,等等都可以看成函数名,如果判断的是一个基本的对象,则返回object 注:我们发现typeof null,结果返回了object,这是一个很早之前的BUG,一直沿用至今。 试用范围:如果通过typeof 来判断类型,适用于判定基本类型,或者判断是否为函数。

5.编码实战

6.扩展思考

JavaScript 类型转换有哪些,该怎样转换?

JavaScript 变量可以转换为新变量或其他数据类型:

可以通过使用 JavaScript 函数

也可以通过 JavaScript 自身自动转换

使用 JavaScript 函数

Number() 函数把对象的值转换为数字。

String() 函数把对象的值转换为字符串

一元运算符 + 可用于将变量转换为数字

自动转换类型

当 我们尝试操作一个 “错误” 的数据类型时,JS会自动帮我们转换为 “正确” 的数据类型。 即使输出来结果不是我们所期望的:

3 + null // 返回 3 null 转换为了数字 0

“3” + null // 返回”3null” null 转换为 “null”

“3” + 1 // 返回 “31” 数字 1 转换为了字符串 “1”

“3” - 1 // 返回 2 这里字符串”3” 转换为了数字 3

7.参考文献

参考资料:https://www.jianshu.com/p/248737f3d6f3

—— javascript数据类型

参考资料:http://javascript.ruanyifeng.com/#introduction

—— 阮一峰:Javascript标准参考

参考资料:https://blog.csdn.net/suyu_yuan/article/details/56282357

—— js如何判断变量的数据类型?

8.更多讨论

ES6新增的第七种基本类型有什么作用呢?

typeof的局限性?

9.互动提问

Symbol是什么?
答:ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。
凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

new操作符具体干了什么呢?
答:(1)创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。

(2)属性和方法被加入到 this 引用的对象中。

(3)新创建的对象由 this 所引用,并且最后隐式的返回 this 。

JS基础类型和对象,分别是按值传递还是按引用传递?
答:JS的基本类型,是按值传递的;而对象是通过引用传递,而不是值传递。也就是说,变量赋值只会将地址传递过去。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值