zhouguoguang 2023-11-14 15:30 采纳率: 0%
浏览 5

这里为什么要使用普通函数


<template>
    <img ref="imgRef">
</template>
<script setup lang="ts">
import { ref, nextTick, watch } from 'vue';
import { GET_TOKEN } from '@/utils/token';
const imgRef = ref<any>();

const $props = defineProps(['url']);

watch(() => $props.url, (n) => {
    console.log(n, '变化了');
    if (n) {
        getImage(n);
    }
}, { immediate: true });

//这里为什么要使用普通函数,假如用箭头函数会提示Cannot access 'getImage' before initializationCannot access 'getImage' before initialization
function getImage(url: string | { [x: string]: any; } | URL) {
    nextTick(() => {

        let request = new XMLHttpRequest();
        request.responseType = 'blob';
        request.open('get', url, true);
        // 添加自定义请求头
        request.setRequestHeader('token', JSON.parse(GET_TOKEN() as string)?.token);
        request.onreadystatechange = e => {
            if (request.readyState == XMLHttpRequest.DONE && request.status == 200) {
                imgRef.value.src = URL.createObjectURL(request.response);
                imgRef.value.onload = () => {
                   imgRef.value && URL.revokeObjectURL(imgRef.value.src);
                }
            }
        };
        request.send(null);
    });
}
</script>
  • 写回答

2条回答 默认 最新

  • KUOKUO众享 2023-11-14 17:22
    关注

    因为 function 在声明时会提升,预解析 js 引擎会把 js 里所有的 var 还有 function 提升到当前作用域的最前面

    评论

报告相同问题?

问题事件

  • 创建了问题 11月14日

悬赏问题

  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework),并且基于qt实现打开一个web
  • ¥30 AD9854 为什么输出波形幅度受限,AI机器人勿扰
  • ¥15 如何在ubunto上安装CEF (Chromium Embedded Framework