vue3 + vite 中 import 引入js文件 import './test.js' this输出undefined?

// test.js
(function(fun) {
  fun()
})(function() {
  console.log(this)
})
// A.js
import './test.js'

这里this输出undefined

但是在vue2 中 request引入
this则不是undefined

我想知道是什么原因

说vue3 没this的这是我没想到的
然后我又写了个demo 看了下

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>import</title>
</head>
<body>
<script type="module">
    import './test.js'
</script>
</body>
</html>

test.js

(function(fun) {
  fun()
})(function() {
  console.log(this)
})

启动服务,打开浏览器输出还是undefined

阅读 2.5k
2 个回答
✓ 已被采纳新手上路,请多包涵

静态的 import 语句用于导入由另一个模块导出的绑定。无论是否声明了 strict mode,导入的模块都运行在严格模式下。在浏览器中,import 语句只能在声明了 type="module" 的 script 的标签中使用

严格模式下,执行函数时没有执行主体,因此this指向undefined,非严格模式下的执行主体默认是window,因此this指向window。

新手上路,请多包涵

vue3中不存在this

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