侃侃爾雅
2023-03-18 17:31:07
語境中ts/app.ts,有:function foo() { console.log('Hello Word');}它使用 Webpack 成功編譯bundle.js并加載:<script src="dist/bundle.js"></script>問題如何foo從我的瀏覽器控制臺執行?> foo()Uncaught ReferenceError: foo is not defined
1 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
正如您擁有的那樣,您無法在全球范圍內訪問它。但如果你愿意,你可以做到
function foo() {
console.log('Hello Word');
}
(window as any).foo = foo;
然后它應該在對象上可用window(這意味著您可以訪問它或者window.foo()因為foo()該window對象是全局對象。
默認情況下,諸如此類的變量和方法foo對于它們所在的模塊(即文件)是私有的。您可以像這樣導出它們:
export function foo() {
console.log('Hello Word');
}
這意味著您可以從其他模塊導入它們,即
import {foo} from "foo";
foo();
但是瀏覽器本身不理解那個import和export語法 (*) 所以它們仍然不是全局的。是 webpack 理解該語法并將它們全部拼接成瀏覽器可以使用的形式(在您的“dist/bundle.js”文件中)。查看該文件,您將看到 webpack 插入的引導程序代碼。
(*) 編輯:瀏覽器開始支持模塊:
從本質上講,沒有什么是全局的,但這是一件好事,否則它們可能會相互沖突。即它不會是模塊化的。
添加回答
舉報
0/150
提交
取消