JavaScript数据类型(部分)

1.String

a.charCodeAt 的作用是获取字符的 Unicode 编码,俗称 “Unicode 码点”。fromCharCode 是 String 对象上的静态方法,作用是根据 Unicode 编码返回对应的字符。

 

b.

substr(start [, length])

substring(start [, end])

slice(start [, end])

[substring 和 slice 的区别则是:slice 可以接受 “负数”,表示从字符串尾部开始计数; 而 substring 则把负数或其它无效的数当作 0.]

[substr 的 start 也可接受负数,也表示从字符串尾部计数,这点和 slice 相同;但 substr 的 length 则不能小于 1,否则返回空字符串。]

2.Number

对于不同数据类型的转换,Number() 的处理也不尽相同,其转换规则如下:


【1】如果是 Boolean 值,true 和 false 将分别被转换为 1 和 0。 


【2】如果是数字值,只是简单的传入和返回。


【3】如果是 null 值,返回 0。


【4】如果是 undefined,返回 NaN。


【5】如果是字符串,遵循下列规则:


如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值; 
如果字符串中包含有效的浮点格式,则将其转换为对应的浮点数值; 
如果字符串中包含有效的十六进制格式,则将其转换为相同大小的十进制整数值; 
如果字符串是空的(不包含任何字符),则将其转换为 0; 
如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。

【6】如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。

3.Boolean

Boolean 类型只有两个字面值:true 和 false 。 在 JavaScript 中,所有类型的值都可以转化为与 Boolean 等价的值 。转化规则如下:
 所有对象都被当作 true
 空字符串被当作 false
 null 和 undefined 被当作 false

 数字 0 和 NaN 被当作 false

 

操作符:

===: 类型相同,并且值相等,才返回 true ,否则返回 false 。

!== : 类型不同,或者值不相等,就返回 true,否则返回 false 。

逻辑与&&:从左到右检测每一个分项,返回第一个布尔值为 false 的分项,并停止检测 。如果没有检测到 false 项,则返回最后一个分项 。

逻辑或丨丨:从左到右检测每一个分项,返回第一个布尔值为 true 的分项,并停止检测 。如果没有检测到 true 项,则返回最后一个分项 。

4.Symbol

a.和其他基本类型不同的是,Symbol 作为基本类型,没有对应的包装类型,也就是说 Symbol 本身不是对象,而是一个函数。因此,在生成 Symbol 类型值的时候,不能使用 new 操作符 。它只能用显示的方式转为字符串和布尔值,即:String(Symbol()) / Boolean(Symbol())

b.用 Symbol 作为对象的属性名时,不能直接通过点的方式访问属性和设置属性值。因为正常情况下,引擎会把点后面的属性名解析成字符串。

错误:obj.s         正确:obj[s]

 

c.

let s = Symbol(); let ss = Symbol(); s == ss ; 结果是false 

 

或者 
let s = Symbol('a'); let ss = Symbol('a'); s == ss ; 结果是false 

 

通过以上的比较,我们对Symbol的唯一性,有了一定的了解。也就是说当你创建了一个Symbol数据后,那么你就是独一无二的存在了,是的就是这样。

d.有时,我们希望重新使用同一个 Symbol 值,以上我们都说了Symbol数据类型是唯一的,所有只用Symbol()方法创建的Symbol类型是无法实现的。所有我们可以用Symbol.for()这个方法来实现。


let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');

s1 === s2 // true

e.Symbol.keyFor()这个方法,主要服务于Symbol.for()的。因为Symbol()方法创建的值用Symbol.keyFor()永远是undefined

5.Undefined

Undefined 是 Javascript 中特殊的原始数据类型,它只有一个值,即 undefined,字面意思是:未定义的值 。它的语义是,希望表示一个变量最原始的状态,而非人为操作的结果 。 这种原始状态会在以下 4 种场景中出现:

 

【1】声明了一个变量,但没有赋值

var foo;

console.log(foo); //undefined

【2】访问对象上不存在的属性
1
2
3
console.log(Object.foo); // undefined
var arr = [];

console.log(arr[0]); // undefined

【3】函数定义了形参,但没有传递实参
1
2
3
4
5
// 函数定义了形参 a
function fn(a) {
    console.log(a); //undefined
}

fn(); // 未传递实参

【4】使用 void 对表达式求值
1
2
3
4
5
void 0 ; // undefined
void false; // undefined
void []; // undefined
void null; // undefined

void function fn(){} ; // undefined

ECMAScript 明确规定 void 操作符 对任何表达式求值都返回 undefined ,这和函数执行操作后没有返回值的作用是一样的,JavaScript 中的函数都有返回值,当没有 return 操作时,就默认返回一个原始的状态值,这个值就是 undefined,表明函数的返回值未被定义。

6.Null

Null 是 Javascript 中特殊的原始数据类型,它只有一个值,即 null,字面意思是:“空值”  。它的语义是,希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。

如果想要知道 null 的真实数据类型,可以通过下面的方式来获取。

Object.prototype.toString.call(null) ; // [object Null]

7.Object 类型

在 ECMAScript 规范中,引用类型除 Object 本身外,Date、Array、RegExp 也属于引用类型 。

 

引用类型也即对象类型,ECMA262 把对象定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。 也就是说,对象是一组没有特定顺序的值 。由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度。因此,对象的值存储在堆(heap)中,而存储在变量处的值,是一个指针,指向存储对象的内存处,即按址访问。具备这种存储结构的,都可以称之为引用类型 。

注意,通过var obj = new Object()的写法生成新对象,与字面量的写法var obj = {}是等价的。或者说,后者只是前者的一种简便写法。

虽然用法相似,但是Object(value)与new Object(value)两者的语义是不同的,Object(value)表示将value转成一个对象,new Object(value)则表示新生成一个对象,它的值是value

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值