首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在JavaScript中不推荐使用arguments.callee.caller属性?

在JavaScript中不推荐使用arguments.callee.caller属性,主要原因有以下几点:

  1. 安全问题:callee属性存在潜在的安全风险,因为它允许代码在调用执行上下文时使用当前的函数作为其上下文中的函数调用的主体。这可能会造成不安全的逻辑和潜在的安全漏洞,尤其是在涉及回调函数的逻辑中。
  2. 非标准属性:arguments.callee和arguments.caller属性不是标准的JavaScript属性,并且在某些浏览器中可能无法正常工作。在这些浏览器中,使用这些属性可能会导致问题,因为这些属性可能在不同的浏览器版本中实现有所不同。此外,有些开发人员可能会认为这些属性是非标准的,可能会导致问题。
  3. 影响性能:调用callee属性可能需要额外的计算,特别是在高并发场景下。此外,使用callee属性可能导致额外的内存占用。

因此,不推荐使用arguments.callee.caller属性的主要原因是安全问题、非标准性和性能问题。在实际开发中,更推荐使用更安全且标准的方式来实现类似的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么推荐使用BeanUtils属性转换工具

1 背景 之前专栏中讲过“推荐使用属性拷贝工具”,推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。...推荐的主要理由是: 有些属性拷贝工具性能有点差 有些属性拷贝工具有“BUG” 使用属性拷贝工具容易存在一些隐患(后面例子会讲到) 2 示例 首先公司内部就遇到过 commons 包的 BeanUtils...打断点可以看到,属性拷贝之后 B 类型的 second 对象 ids 仍然为 Integer 类型: 如果转换为字符串,直接进行打印,并不会报错。...如果我们 A 类添加一个 String number 属性 B 类添加一个 Long number 属性使用 mapstruect 当 number 设置为非数字类型时就会报 .NumberFormatException...之前对各种属性映射工具的性能进行了简单的对比,结果如下: 因此慎用属性转换工具,如果可能建议自定义转换类,使用 IDEA插件自动填充,效率也挺高, A 或 B 任何属性类型匹配,甚至删除一个属性

76020

为什么推荐使用BeanUtils属性转换工具

1 背景 之前专栏中讲过“推荐使用属性拷贝工具”,推荐直接定义转换类和方法使用 IDEA 插件自动填充 get / set 函数。...推荐的主要理由是: 有些属性拷贝工具性能有点差 有些属性拷贝工具有“BUG” 使用属性拷贝工具容易存在一些隐患(后面例子会讲到) 2 示例 首先公司内部就遇到过 commons 包的 BeanUtils...打断点可以看到,属性拷贝之后 B 类型的 second 对象 ids 仍然为 Integer 类型: ? 如果转换为字符串,直接进行打印,并不会报错。...如果我们 A 类添加一个 String number 属性 B 类添加一个 Long number 属性使用 mapstruect 当 number 设置为非数字类型时就会报 .NumberFormatException...因此慎用属性转换工具,如果可能建议自定义转换类,使用 IDEA插件自动填充,效率也挺高, A 或 B 任何属性类型匹配,甚至删除一个属性,编译阶段即可报错,而且直接调用 get set 的效率也是非常高的

1.6K30

什么是线程组,为什么 Java 推荐使用

在线程组,如果发生未捕获异常,可以通过 Thread.UncaughtExceptionHandler 进行处理。 Java ,虽然线程组是一种功能强大的机制,但实际上并不推荐使用。...下面主要从以下几个方面说明: 1、难以扩展 平常的开发,当我们需要对线程进行动态调度时,线程组往往过于笨重,这导致了代码难以扩展。...3、容易引起歧义 Java ,虽然 ThreadGroup 的设计旨在通过将一组线程分到同一个容器来轻松管理和控制它们,但如果使用错误,可能会导致线程状态。...因此, Java ,线程组已基本过时,推荐使用 Executor 框架等新的更实用的工具来进行线程管理。... JDK8之后,API也推出了更加强大的CompletionService接口,它能够执行更为复杂的异步任务并得到结果,这极大地扩展了Java多线程编程的功能性。

24120

为什么推荐使用PHPicker

PHPicker iOS 14 系统新增了一个图片选择器 PHPicker,官方建议使用 PHPicker 来替代原有的 API 进行图片选择,下面我们来看看 PHPicker 的优点: 支持多选 支持搜索...images) config.filter = .any(of: [.livePhotos, .videos]) // 如果要获取视频,最好设置该属性,避免系统对视频进行转码 config.preferredAssetRepresentationMode...case savedPhotosAlbum = 2 }复制代码 另外 AssetsLibrary 早在几年前被废弃,如果还在使用 AssetsLibrary 请尽快使用新的 API。...PHPicker 的缺点 为什么推荐使用 PHPicker,虽然说 PHPicker 有一些优点,但同时也有一些缺点: 加载 iCloud 资源时没有进度回调 不支持图片编辑(比如选择头像要将图片裁剪成正方形...新增权限 iOS 14 相册新增了一个 “Limited Photos Library” 模式,授权时多了一个 “选择照片” 的选项。

2.4K40

MySQL为什么推荐使用in

内存消耗:当使用IN语句时,MySQL需要将值列表的所有值加载到内存中进行比较。如果值列表很大,可能会导致内存消耗过高,甚至引发内存溢出的问题。这对于内存有限的系统来说尤其重要。...查询优化器的限制:MySQL的查询优化器处理IN语句时可能会遇到一些限制。例如,优化器可能无法准确估计IN语句的选择性,从而导致选择不合适的查询计划。...JOIN语句通常能够更好地利用索引,并且处理大量数据时更高效。 子查询:子查询是将一个查询嵌套在另一个查询。通过使用子查询,我们可以将IN语句拆分为多个较小的查询,从而提高查询性能。...当然,每个具体的情况都是不同的,所以选择查询操作符时,我们需要根据具体的需求和数据情况进行评估和测试。...优化查询性能时,我们可以使用MySQL的查询分析工具来帮助我们理解查询的执行计划和性能瓶颈,从而做出更好的决策。

19330

Vue 为什么推荐用 index 做 key

本文首发于政采云前端团队博客: Vue 为什么推荐用 index 做 key https://zoo.team/article/vue-index 前言 前端开发,只要涉及到列表渲染,那么无论是...那么这篇文章就会讲解 key 的作用以及为什么最好不要使用 index 作为 key 的属性值。...key 的作用 Vue 中使用虚拟 dom 且根据 diff 算法进行新旧 DOM 对比,从而更新真实 dom ,key 是虚拟 DOM 对象的唯一标识, diff 算法 key 起着极其重要的作用...下面我们就以 Vue3.0 diff 算法为切入点,剖析 key diff 算法的作用 具体 diff 流程如下 Vue3.0 patchChildren 方法中有这么一段源码 if (...,使用 index 作为 key 也是可以的(但是还是建议使用,养成良好开发习惯)。

1.2K20

Java 为什么推荐 while 循环中使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么循环中推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...比如微服务体系,客户端上报实例状态,或者服务端检测客户端状态都会使用定时轮询的机制。...事件机制上文的场景,我更推荐事件机制进行解耦,当变量被改变时,发送变量修改事件进行处理,如常见的 Spring Event 或者其它事件推送框架。...比如一些用户登录场景,当用户登录状态改变时,发送登录事件进行后续处理,比如登录通知等等等待和唤醒等待和唤醒机制一般适用于等待时间较长的场景,因为等待和唤醒是一个性能消耗比较大的操作;等待时间不是很长的场景可以使用轮询机制... Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。

63330

为什么 MySQL 推荐使用 join?

对于 mysql,推荐使用子查询和 join 是因为本身 join 的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引 单表取数据,然后程序里面做 join,merge 数据。...如果关联的某个表发生了变化,那么就无法使用查 询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果了。 将查询分解后,执行单个查询可以减少锁的竞争。...应用层做关联查询,意味着对于某条记录应用只需要查询一次,而在数据库做关联查询,则可能需 要重复地访问一部分数据。从这点看,这样的重构还可能会减少网络和内存的消艳。   ...更进一步,这样做相当于应用实现了哈希关联,而不是使用 MySQL 的嵌套循环关联。某些场景哈希关联的效率要高很多。...这种时候是建议跨库 join 的。目前 mysql 的分布式中间件,跨库 join 表现不良。 3.

2K20

为什么推荐使用存储过程?

最近项目中遇到的存储过程问题,让我想起了去年在武汉出差时一位同事的发问: 我觉得存储过程挺好用的,为什么建议用?...如果我C#代码调用这已有的三个存储过程,事情本该非常快就能结束。我也是这么做的。...为了实现这一目的,首先想到的是使用临时表,将返回结果集存入临时表,再对其进行count(*)的计数操作: CREATE PROCEDURE [dbo]....他文章也无可奈何地说道 Keep in mind that compared to languages such as C# and Java, Transact-SQL is poorly equipped...但对于业务逻辑的通用方法,非常推荐将其写在存储过程,代码复用、扩展与客户端语言比,相差甚远。也许终究能实现,但代价与风险比客户端语言要高,得不偿失。

2K30

面试官:为什么系统推荐双写?

思考第一个问题1、database,redis,elasticsearch,hadoop的数据是有关系的,还是彼此独立的?显然是有关系的,在这几个数据源的数据都是相关的。只是格式不一样而已!...一种比较简单且容易想到的方案是,hardcode程序 例如现在有两个数据源DataSouce1和DataSource2,我们往里头写数据,代码如下 ProductService{     \\省略...因为写入顺序已经消息队列定义好,各数据源按照消息队列的消息顺序,恢复数据即可,并不存在竞争现象。因此,不会出现不一致的问题!原子性问题OK,这种情况下,如果写入DataSource失败会怎么样?...如下图所示 该图中的中间件,例如oracle的oracle golden gate可以提取数据变化。mysql的canal能提取数据的变化。至于消息队列,可以选用kafka。...直接提取数据变化到kafka,其他数据源从kafka获取数据,避免了直接双写从而导致一致性和原子性问题。 基于微服务的思想,构建在 B2C 电商场景下的项目实战。

2.3K10

为什么IDEA推荐使用@Autowired ?

但是当我们使用IDEA写代码的时候,经常会发现@Autowired注解下面是有小黄线的,我们把小鼠标悬停在上面,可以看到这个如下图所示的警告信息: 那为什么IDEA会给出Field injection...下面带着这样的问题,一起来全面的了解下Spring的三种注入方式以及他们之间各方面的优劣。...Constructor Injection Constructor Injection是构造器注入,是我们日常最为推荐的一种使用方式。...三种依赖注入的对比 知道了Spring提供的三种依赖注入方式之后,我们继续回到本文开头说到的问题:IDEA为什么推荐使用Field Injection呢?...使用@Autowired注解的时候,要使用Setter Injection方式,这样代码更容易编写单元测试。 好了,今天的学习就到这里!如果您学习过程如遇困难?

66920

为什么IDEA推荐使用@Autowired?

但是当我们使用IDEA写代码的时候,经常会发现@Autowired注解下面是有小黄线的,我们把小鼠标悬停在上面,可以看到这个如下图所示的警告信息: 那么为什么IDEA会给出Field injection...下面带着这样的问题,一起来全面的了解下Spring的三种注入方式以及他们之间各方面的优劣。...Spring的三种依赖注入方式 Field Injection @Autowired注解的一大使用场景就是Field Injection。...Constructor Injection Constructor Injection是构造器注入,是我们日常最为推荐的一种使用方式。...三种依赖注入的对比 知道了Spring提供的三种依赖注入方式之后,我们继续回到本文开头说到的问题:IDEA为什么推荐使用Field Injection呢?

57320

为什么推荐使用汉字作为密码?

目录 1、使用传统 2、汉字加密难度大 3、用户设置习惯 4、保护密码更安全 5、统一标准 ---- 日常生活,密码的使用十分常见。基本上,登录APP、手机支付、开机解锁,都需要使用密码。...密码的形式也多种多样:数字密码,指纹密码,字母密码等,却唯独没有汉字,这是为什么呢?如何提高密码的安全性呢? 汉字不能当密码的原因主要包括以下五点。...1、使用传统 有关密码组成没有汉字这一问题,首先要追溯到计算机的发明。...大家设置时,可以根据提示进行修改,尽量使自己的密码安全度更高一些~ 4、保护密码更安全 我们需要通过输入法输入密码,使用字母、数字和符号时,手机屏幕上只会显示星号或实心圆点,而若使用汉字密码,输入法的候选字出现在屏幕上...5、统一标准 对于一些大型的(尤其是全世界各地区提供服务的)网站和应用,使用统一的密码规范能够降低服务和维护成本。

54620

为什么推荐Spring Boot中使用@Value加载配置

@Value注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean。...比如下面这样,就可以轻松的把配置文件key为com.didispace.title配置信息加载到TestService使用 @Service public class TestService {...但是为什么推荐大家使用它呢?核心原因是:当我们使用@Value来直接提取配置信息使用的时候,会产生配置信息加载的碎片化。...我比较推荐的就是使用@ConfigurationProperties来分类和加载各种配置信息,比如,我要加载关于com.didispace的相关配置时候,就写一个这样的实现: @Configuration...如果要修改配置相关的逻辑,也只需要修改DidispaceProperties的内容即可,而不是到处找@Value的配置。

6100

美团:为什么 MySQL 推荐使用 join?

1.对于mysql,推荐使用子查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据,然后程序里面做join,merge数据。...如果关联的某个表发生了变化,那么就无法使用查询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果了。 将查询分解后,执行单个查询可以减少锁的竞争。...应用层做关联查询,意味着对于某条记录应用只需要查询一次,而在数据库做关联查询,则可能需 要重复地访问一部分数据。从这点看,这样的重构还可能会减少网络和内存的消艳。...更进一步,这样做相当于应用实现了哈希关联,而不是使用MySQL的嵌套循环关联。某些场景哈希关联的效率要高很多。...工作流、三方登录、支付、短信、商城等功能 项目地址:https://github.com/YunaiV/yudao-cloud 视频教程:https://doc.iocoder.cn/video/ 三、推荐使用

28410

为什么阿里推荐使用 keySet() 遍历HashMap?

HashMap的遍历方式现如今有非常多种: 1、 使用迭代器(Iterator); 2、 使用keySet()获取键的集合,然后通过增强的for循环遍历键; 3、 使用entrySet()获取键值对的集合...,然后通过增强的for循环遍历键值对; 4、 使用Java8+的Lambda表达式和流; 以上遍历方式的孰优孰劣,《阿里巴巴开发手册》写道: 这里推荐使用的是entrySet进行遍历,Java8推荐使用...其中后面一段话很好理解,但是前面这句话却有点绕,为什么转换成了Iterator遍历了一次?...可以看上篇文章了解~ 我们可以通过反编译,或者直接通过Ideaclass文件查看对应的Class文件 public class Test { public Test() { }...为什么需要遍历呢?我们查看iterator()方法 iterator() 发现是Set定义的一个接口。

30420

我们为什么推荐Json中使用string表示Number属性

在这篇简短的文章,我将解释使用JSON传输数据时,为什么浮点数或大十进制值应表示为字符串 。...long类型引发的诡异情况 长话短说,同事利用swagger对接后端API时,诡异的发现swaggerUI显示的json属性值并不是api返回的值。...直接给结论:部分long类型值(最大值2^63^-1)会超过Javascript的最大安全Number(2^53^-1), 浏览器/前端 使用JSON.parse(123123126964992223)...将JSON的数字值作为字符串传输的是为了消除传输的精度丢失或歧义性。 JSON规范未给数值指定精度,JSON解析器会自由选择合适的数值精度。...另外部分long类型值(最大值263-1)会超过Javascript的最大安全Number(253 -1), 前端json反序列化时也会出现错误。 stackoverflow有个解释很赞: ?

96310

为什么推荐数据库使用外键?

我的经验告诉我,很多数据库(大多数我曾经使用的)包含外键时并不总是一件坏事。在这篇文章,我想把重点放在为什么的原因上。 为什么这是一个问题?...2.表格关系不清晰 数据库缺少外键的另一个不太明显的负面影响是,不了解该模式的人很难找到正确的表并找出表关系。这可能会导致严重的数据库查询和报告问题。 为什么数据库可以没有外键?...这仅仅是我各种渠道(主要是互联网论坛)都能找到的许多开发人员、架构师为什么使用它们的理由。 我个人(和许多其他经验丰富的数据库专家)建议在任何可能的地方使用它们(不会导致更多的问题)。...这些框架可以自己创建数据库表,而总是创建外键。使用这些工具的开发人员很少会干扰自动生成的模式,并且不需要外键。...而且这种架构大型系统很常见。

1.8K20

为什么阿里推荐使用MySQL分区表?

分区表有什么问题,为什么公司规范不让使用分区表呢? 什么是分区表 示例表插入两条记录,按分区规则,记录分别落在p_2018和p_2019分区。...分区表使用起来看来挺好使的呀,为啥禁用? 使用分区表的一个重要原因就是单表过大。那若不使用分区表,就要手动分表。...若使用的普通分表,则当你truncate一个分表时,肯定不会跟另外一个分表上的查询语句,出现MDL锁冲突。...即使是使用业务分表,where条件没有使用分表的key,也必须访问所有的分表。 分区表的应用场景 一大优势是对业务透明,相对于用户分表来说,使用分区表的业务代码更简洁。...这里有两个问题: 分区并不是越细越好 单表或单分区的数据一千万行,只要没有特别大的索引,对于现在的硬件能力来说都已是小表 分区不要提前预留太多,使用之前预先创建即可 比如,如果是按月分区,每年年底时再把下一年度的

1.8K20

为什么MySQL推荐使用子查询和join

来源:cnblogs.com/liboware/p/12740901.html 1.对于mysql,推荐使用子查询和join是因为本身join的效率就是硬伤,一旦数据量很大效率就很难保证,强烈推荐分别根据索引单表取数据...如果关联的某个表发生了变化,那么就无法使用查询缓存了,而拆分后,如果某个表很少改变,那么基于该表的查询就可以重复利用查询缓存结果了。 将查询分解后,执行单个查询可以减少锁的竞争。...应用层做关联查询,意味着对于某条记录应用只需要查询一次,而在数据库做关联查询,则可能需 要重复地访问一部分数据。从这点看,这样的重构还可能会减少网络和内存的消艳。...更进一步,这样做相当于应用实现了哈希关联,而不是使用MySQL的嵌套循环关联。某些场景哈希关联的效率要高很多。...三、推荐使用join的原因 1.DB承担的业务压力大,能减少负担就减少。

3.8K30
领券