《每天十分钟》-红宝书第4版-变量、作用域与内存

最近有点忙,好长时间没抄经了,今天继续,之前语言基础相对简单,跳过一部分操作符。

变量

js 的变量是特殊的松散类型,由于没有规则定义变量必须包含什么数据类型,变量的值和数据类型在脚本生命期内可以改变。

原始值和引用值。

原始值(primitive value)就是最简单的数据。

引用值(reference value)则是由多个值构成的对象。

之前学过的6 种原始值:Undefined、Null、Boolean、Number、String 和 Symbol。保存原始值的变量是按值(by value)访问的,因为我们操作的就是存储在变量中的实际值。

引用值是保存在内存中的对象。与其他语言不同,JavaScript 不允许直接访问内存位置,因此也就不能直接操作对象所在的内存空间。在操作对象时,实际上操作的是对该对象的引用(reference)而非实际的对象本身。为此,保存引用值的变量是按引用(by reference)访问的。

注意 在很多语言中,字符串是使用对象表示的,因此被认为是引用类型。ECMAScript

打破了这个惯例。

动态属性

原始值使用字面量初始化的,则不能动态添加属性的

javascript 复制代码
var t = "zhangsan"
t.age = 18
console.log(t.age) //undefined

但如果是使用new 关键字创建的Object类型的实例 则可以添加动态属性,因为已经是Object

javascript 复制代码
var abc = new String('zhangsan')
abc.age = 18
console.log(abc.age) // 18

复制值

一个原始值赋值到另一个原始值时,两个变量的内存存储时完全独立的,这个很好理解,因为上面讲了,原始值就是内存直接存储的值

javascript 复制代码
var a = 1;
var b = a
a = 3
console.log(b) //1

而引用类型再赋值过程中实际只是复制了内存的指针

javascript 复制代码
var a = {"name":"zhangsan"}
var b = a
a.name = "lisi"
console.log(b) //{name: 'lisi'}

传递参数

和内存复制一样,原始值完全独立,引用类型指向同一块内存,修改后指向引用的变量都会变化

确定类型

typeof 操作符最适合用来判断一个变量是否为原始类,之前再语言基础中由示例,此处不再重复。

ypeof 虽然对原始值很有用,但它对引用值的用处不大。我们通常不关心一个值是不是对象,

而是想知道它是什么类型的对象。为了解决这个问题,ECMAScript 提供了 instanceof 操作符,语

法如下:

javascript 复制代码
var a = {name:'zhangsan'}
a instanceof Object //true
var b = "123"
b instanceof Object //false

按照定义,所有引用值都是 Object 的实例,因此通过 instanceof 操作符检测任何引用值和

Object 构造函数都会返回 true。类似地,如果用 instanceof 检测原始值,则始终会返回 false,

因为原始值不是对象。

下篇继续抄 较为重要的 执行上下文

今天我家二娃也一年级了,找了篇关于放学开心的诗读读,😊

《村居》

清代·高鼎

草长莺飞二月天,

拂堤杨柳醉春烟。

儿童散学归来早,

忙趁东风放纸鸢。

相关推荐
昵称画4 小时前
交接班记录电子化:三班之间的信息不漏
开发语言·数据库·人工智能·低代码·php
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
沙蒿同学5 小时前
不引 Ghostscript:我用纯 Go 给 PDF 做了一场「压缩手术」
前端·后端·github
传奇开心果编程5 小时前
【Rust入门练中学】第6课:结构体与方法
开发语言·rust·结构体·编程语言理论·结构体方法·编程通用语言
Linux_cy5 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
code tsunami5 小时前
【无标题】
开发语言·python
变与不变8065 小时前
jQuery细节以及使用应用场景
前端·javascript·jquery
CodeGL5 小时前
10、Python基础之进程和线程
开发语言·python
TechWayfarer6 小时前
PHP漏洞被利用,怎么揪出攻击IP?
开发语言·python·tcp/ip·网络安全·php
SailingCoder7 小时前
【封闭结束1】端到端交付:Agent 一次请求如何走完全链路
前端·安全·ai·面试·agent·harness