《每天十分钟》-红宝书第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,

因为原始值不是对象。

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

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

《村居》

清代·高鼎

草长莺飞二月天,

拂堤杨柳醉春烟。

儿童散学归来早,

忙趁东风放纸鸢。

相关推荐
知识分享小能手1 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one1 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
魔云连洲1 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
TomCode先生2 小时前
c#动态树形表达式详解
开发语言·c#
mCell2 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
高-老师2 小时前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥3 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_437830943 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
超级无敌攻城狮3 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
鹿鹿学长4 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模