JavaScript:如何从函数e中获取函数b内部的变量d的值?
如何获取函数内部的局部变量值
这个问题其实是变量作用域的典型小坑啦!函数b里的d是它的局部变量,默认情况下外部作用域(比如函数e)是没办法直接访问到的,所以你现在拿到的自然是外部的d值。要拿到b内部的"yes",有几种实用的办法,我给你拆解一下:
方法1:让函数b返回内部变量
最简单的方式,就是让b把内部的d作为返回值抛出来,这样调用b的时候就能拿到它:
let d = "no"; // 外部的d function b() { let d = "yes"; // 函数b的局部d return d; // 返回内部变量 } function e() { console.log(b()); // 调用b,直接拿到返回的"yes" } e(); // 输出:yes
方法2:把内部变量挂载到函数对象上
你可以把b内部的d绑定到b自身作为属性,这样外部就能通过b.d访问到——不过要记得先调用一次b,让它完成属性的赋值:
let d = "no"; function b() { b.d = "yes"; // 把内部值挂载到函数b的属性上 } b(); // 先执行b,设置好b.d的值 function e() { console.log(b.d); // 访问b的属性d,得到"yes" } e(); // 输出:yes
方法3:用闭包封装访问入口
如果不想直接返回变量,还可以用闭包创建一个专门的访问函数,让外部通过这个函数间接拿到内部的d:
let d = "no"; function b() { let d = "yes"; // 返回一个闭包函数,它能访问到b内部的d return function getInnerD() { return d; }; } // 先调用b,拿到这个闭包函数 const getBInnerD = b(); function e() { console.log(getBInnerD()); // 调用闭包,获取内部的"yes" } e(); // 输出:yes
这几种方法里,闭包的方式最灵活,能在不暴露内部变量的前提下提供访问入口,适合需要保护变量的场景;如果只是简单获取,返回变量的方式最直接。
内容的提问来源于stack exchange,提问作者Ras
相关产品推荐
相关产品推荐

