jsexport作用域

定义了一个js文件a.js,export 抛出方法。
在b.js中调用a,
在不通过函数传参的方式,有没有什么其他方法在a中获得b的作用域变量

实际场景时,vue项目中,将渲染配置抽出js文件,但是js文件内的模板,依赖h函数。
vue文件作用域下,没有这个问题。
image.png

// a.js


export const a = () => {
    console.log(bb)
}
// b.js

import {a} from "a.js"

const bb = 1;

a();
阅读 1.6k
3 个回答
// a.js
export const a = (options) => {
    // console.log(bb)
    console.log(options.bb);
}

// b.js
import { a } from "a.js"
const bb = 1;
a({ bb });

可以作为window对象的属性从而变成全局变量:

// b.js
window.bb = 1;

// a.js
console.log(window.bb);
但这是一种编程陋习,是 JS 及其部分开发者被一些人嘲讽乃至鄙视的诸多原因之一

推荐写法——明确传递参数:

// b.js
a(bb);

// a.js
export const a = (bb) => {
    console.log(bb)
}

你需要把bb定义为全局变量,否则作用域就局限于文件内

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题