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