当前位置: 首页 > 知识库问答 >
问题:

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

司徒运锋
2023-07-26
// test.js(function(fun) {  fun()})(function() {  console.log(this)})// A.jsimport './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个答案

季华茂
2023-07-26

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

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

袁霍英
2023-07-26

vue3中不存在this

 类似资料:
  • vite如何导入静态.js文件呢?因为我的项目是monorepo架构的,其中有一个common包被其他vue项目所公共引用,然后这个common包里需要动态加载一些.js、.json文件,如何才能在common包放入这些静态文件并直接导入?我试了函数中使用import可以动态导入一些.json文件,但是对于.js文件导入不了。 之前是分别放在引入common的主项目下的public下,然后使用ax

  • 原本本地创建的项目,都可以正常打开的,今天把它复制到了svn的文件夹中,并commit上去了,然后重新用vscode打开,npm i 了项目,但是每个文件中都有这种波浪线说找不到模块,请问有没有人知道什么原因的?

  • 导入 Stylus支持字面@import CSS, 也支持其他Stylus样式的动态导入。 字面CSS 任何.css扩展的文件名将作为字面量。例如: @import "reset.css" 渲染如下: @import "reset.css" Stylus导入 当使用@import没有.css扩展,会被认为是Stylus片段(如:@import "mixins/border-radius")。 @i

  • js import() 如何清除缓存?我有个需求需要动态导入一些js脚本,使用import()导入默认会有缓存,会有很大影响,如何才能实现每次导入的时候清除缓存? 加时间戳的方式其实我刚开始也试了,但使用的第一种方式,这种就会报错,但是我改成方式二,就可以,真奇怪,没有大佬能解释一下这个原因?使用的是vite

  • 描述 (Description) 此函数是希望将名称导出到另一个模块的模块定义(或继承)的普通方法(子例程)。 use函数调用所用包的import方法。 语法 (Syntax) 以下是此函数的简单语法 - import LIST 返回值 (Return Value) 此函数不返回任何值。 例子 (Example) 以下是显示其基本用法的示例代码 - #!/usr/bin/perl package

  • 概要 <#import path as hash> 这里: path:模板的路径。 这是一个算作是字符串的表达式。(换句话说,它不是一个固定的字符串, 它可以是这样的一些东西,比如,profile.baseDir + "/menu.ftl"。) hash: 访问命名空间的哈希表变量不带引号的名字。不是表达式。 (如果要引入动态创建的名字,那么就不得不使用 这个技巧。) 描述 引入一个库。也就是说