The correct answers are A and C because both use named exports for foo and bar. A module can export multiple values by name: export { foo, bar }; This allows another file to import them like this: import { foo, bar } from ' ./utils.js ' ; Option A is correct because it defines both functions locally and exports both of them as named exports. const foo = () = > { return ' foo ' ; }; const bar = () = > { return ' bar ' ; }; export { foo, bar }; Option C is also correct after correcting the typing issue so that both foo and bar are imported first: import { foo, bar } from " ./helpers/utils.js " ; export { foo, bar }; This is called re-exporting. The module imports foo and bar from another module, then exports them again from utils.js. Option B is not the best answer for named access because it exports one default object: export default { foo, bar }; That would require a default import first: import utils from ' ./utils.js ' ; utils.foo(); utils.bar(); It does not directly support named imports in the same way as: import { foo, bar } from ' ./utils.js ' ; Option D exports a default class. Its foo() and bar() are class instance methods, not named exported functions. It would require usage like: import Utils from ' ./utils.js ' ; const utils = new Utils(); utils.foo(); utils.bar(); So for direct multiple function exports, the correct implementations are A and C .