Javascript中的求值策略

本文探讨了JavaScript中参数的求值策略,包括Call By Value、Call By Reference和Call By Sharing。JavaScript采用严格求值策略,但对象参数传递时表现为按共享传递。文章通过实例解释了基本类型和引用类型在函数参数传递时的区别,帮助理解JavaScript中值传递的微妙之处。
摘要由CSDN通过智能技术生成

Javascript中的求值策略

 

介绍

最近看到一个关于JS函数参数传值策略的讨论。很多人会认为JS的Object类型作为函数参数是按引用传递,而基础类型是按值传递,他们也提出了自己的佐证,而且网上搜索很多文章好像也这么说。但是这样的说发是不是正确的呢?让我们来探讨一下JS里面的求值策略。

维基百科搜索Evaluate-Strategy你可以看到求值策略其实是编程语言里面的一个常用术语。求值策略通常指对某种编程语言的表达式进行求值和计算的一个规则集。而函数参数的传值策略是其中一个特殊的例子。

一般业界常见的求值策略有严格和非严格策略。在“严格求值”中,给函数的实参总是在这个函数被调用之前求值,相应的“非严格求值”就是在函数调用时求值所以也叫“惰性求值”。

和大部分语言(C,java,Python,Ruby等)一样JS采用的也是严格求值策略,不同的是在JS里面参数求值顺序从左至右而其他的实现则是从右至左。

注:ES6里面函数增加了默认参数,参数默认值不是传值的,而是每次都重新计算默认值表达式的值也就是说,参数默认值是惰性求值的。

了解JS的函数传参策略对于我们理解JS来说意义重大。


问题

在此之前我们先来看一下问题:

function magic(num, objectA, objectB) {
     num = num * 6;
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值