`

javascript中的按值操作和按引用操作

阅读更多
犀牛书第5版第3章最后一节,谈的是by value versus by reference。这一节总结得很好,对java、ruby等其他语言道理也是一样的,有空可以重读。

In javascript, as in all programming languages, you can manipulate a data value in three important ways. First, you can copy it. For example, you might assign it to a new variable. Second, you can pass it as an argument to a function or method. Third, you can compare it with another value to see whether the two values are equal. To understand any programming language, you must understand how these three operations are performed in that language.

但这里还是重点总结一下javascript中的情况。只总结结论,具体样例忘记了可以看书。

规则1:number和boolean是按值使用,Object(包括Array、Function)是按引用使用。

规则2:但是引用本身是按值传递(references themselves are passed by value)。

关于规则2,还是上个例子吧,不然有点太抽象了。
function test() {
	var person = {name:"michael"};
	alert(person.name);
	notChangeObject(person);
	alert(person.name);
}
function changeObject(obj){
	obj.name = "john";// obj是引用,因此会实际修改name的值
} 
function notChangeObject(obj){
	var temp = {name:"john"};
	obj = temp;// obj本身是按值传递,因此person依然指向原来的对象
}


规则3:string比较特殊,可以认为是按引用复制,按引用传递的。但是实际上没有意义,因为javascript中的string是不可变的。string是按值比较。

总结:
boolean和number:值复制,值传递,值比较
string:复制不可变,传递不可变,值比较
object(包括array和function):引用复制,引用传递,引用比较。
但是引用本身是值传递。
分享到:
评论

相关推荐

    14 - JavaScript 引用和值拷贝.rar

    在 JavaScript 中,我们经常会遇到“引用”和“值拷贝”的概念,这是理解变量工作原理的关键。本篇文章将深入探讨这两个概念以及它们在实际编程中的应用。 1. 值类型与引用类型 在 JavaScript 中,数据类型分为两大...

    javascript实现表格添加删除等操作

    在JavaScript编程中,动态操作HTML元素,特别是表格(table)元素,是常见的需求。这个案例主要涉及了如何使用JavaScript来实现表格的添加、删除等基本操作。这些功能对于网页交互性和用户体验有着重要的作用,尤其...

    javascript中文手册 javascript中文手册

    变量在JavaScript中可以动态声明和赋值,数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象和数组)。运算符则用于处理这些数据,如算术运算符、比较运算符和逻辑运算符。流程控制结构使程序可以...

    JavaScript中各种引用类型的常用操作方法小结

    通过以上操作方法,我们可以看到JavaScript的引用类型提供了高度灵活和强大的数据操作能力,使得处理数组、对象、日期以及文本匹配等操作变得非常方便。学习和掌握这些方法,对于开发高质量的Web应用至关重要。

    JavaScript数据操作_浅谈原始值和引用值的操作本质

    JavaScript中的数据类型分为原始值(Primitive Values)和引用值(Reference Values)。理解这两种数据类型在操作时的本质差异对于编写正确和高效的JavaScript代码至关重要。 原始值包括数字(Number)、字符串...

    跟我学习javascript的基本类型和引用类型

    在JavaScript编程中,理解基本类型和引用类型的区别非常重要,因为这关系到变量的存储、操作以及内存管理等核心概念。在给定的内容中,首先介绍了JavaScript中的基本数据类型和引用数据类型的定义、区别和联系,并...

    javascript中文学习文档

    数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象和数组)。 2. **操作符**:包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==)和逻辑操作符(&&、||、!)等。 3. **流程控制**...

    javascript变量和函数

    基本数据类型是不可变的,而引用数据类型(如对象和函数)是可变的,它们存储的是对象的引用而非实际值。这意味着修改引用类型变量的一个属性会影响到所有引用该对象的变量。 基本数据类型包括: - Number:表示...

    JavaScript中的值是按值传递还是按引用传递问题探讨

    这个问题涉及到两种主要的传递方式:按值传递(call by value)和按引用传递(call by reference)。此外,JavaScript中还有一种特殊的传递方式,称为按共享传递(call by sharing)或者按对象传递(call by object...

    JavaScript.中文学习文档

    - **5.4.1 按值和按引用的比较** - 原始类型的比较(如数字、字符串)是按值比较,而对象类型的比较是按引用比较。 - **5.4.2 传递参数给函数** - JavaScript 中的参数传递都是按值传递,但对于对象来说,实际上...

    JavaScript高级教程-引用类型.pptx

    JavaScript是一种动态类型的编程语言,它的数据类型分为基本数据类型和引用数据类型。...基本类型是不可变的,按值访问,而引用类型则是可变的,按引用访问,这决定了它们在实际编程中的行为和使用方式。

    JavaScript中文手册

    1. **基础语法**:这部分通常会讲解变量声明(var、let、const)、数据类型(包括基本类型和引用类型)、操作符(算术、比较、逻辑等)、流程控制(条件语句、循环结构)以及函数的定义和调用。 2. **对象与数组**...

    javascript DOM 操作.doc

    javascript DOM 操作 javascript DOM 操作是指在客户端使用javascript语言来操作文档对象模型...javascript DOM 操作可以在客户端动态地更改网页的内容和结构,但是在不同的浏览器中需要使用不同的方法和属性来实现。

    《JavaScript高级编程》学习笔记之object和array引用类型

    在JavaScript中,对象和数组是用于存储和操作数据的关键构建块。 首先,我们来看对象类型(Object)。在JavaScript中,几乎所有的引用类型值都是Object类型的实例。Object类型是ECMAScript中使用最多的一个类型。...

    JavaScript语言中文参考手册.zip

    1. **基础语法**:讲解了变量、数据类型(如基本类型和引用类型)、操作符、流程控制(如条件语句和循环)、函数以及声明与定义的区别等。这些是JavaScript编程的基石,理解和掌握它们是编写有效代码的前提。 2. **...

    JavaScript学习笔记整理之引用类型

    JavaScript中的引用类型是编程语言中的一种数据结构,它允许我们将数据和相关操作组合在一起,使得代码更加灵活且易于管理。JavaScript中的引用类型主要包括Object、Array、Date、RegExp等,它们都是基于引用而不是...

    JavaScript语言中文参考手册

    在JavaScript中,数据类型主要包括基本类型(如字符串、数字、布尔值、null和undefined)和引用类型(如对象)。变量声明通常使用var、let或const关键字,其中let和const是ES6引入的新特性,它们提供了更严格的变量...

    JavaScript标准参考教程

    数组作为JavaScript中重要的数据结构,其章节详述了数组的定义、length属性、数组的空位处理以及ECMAScript 5中新增的数组方法(如map、forEach等),这些方法极大地增强了数组操作的灵活性和功能性。 函数章节讲解...

    JavaScript.pdf

    JavaScript的基本数据类型和引用数据类型有明显的区别,基本数据类型直接存储数据值,而引用数据类型存储的是数据的引用(即内存地址)。在JavaScript中,可以通过typeof运算符和instanceof运算符来检测数据的类型。...

Global site tag (gtag.js) - Google Analytics