同一个html里两个script标签如何互不影响

html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Documenttitle>
        <script src="./jquery3.6.js">script>
    head>
    <body>
        <div id="id1">
            id1
            <script id="s1">
                let a = "qwe";
            script>
        div>
        <div id="id2">
            id2
            <script id="s2">
                let a = "aaaaa";
            script>
        div>
    body>
html>

比如 两个 div 分别都有 script 标签,如何让它们之前互不影响呢?

每个script块之间不会相互影响,某个script块出错,不会影响其它块的运行
块之间定义的非局部变量和方法可以共享,(其实只是共享了全局变量和方法)
http://t.zoukankan.com/charling-p-3670022.html

按道理应该办不到

建议如下方式:希望采纳

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>

</head>

<body>
  <div id="id1">
    id1
    <script id="id1">
      ;(function () {
        var a = 1
        console.log('id1',a);
      })();
    </script>
  </div>
  <div id="id2">
    id2
    <script>
      ; (function () {
        var a = 2
        console.log('id2',a);
      })();

    </script>
  </div>
</body>

</html>

方法名不同,变量不同

使用闭包的形式

(function () {
    let a = '我是第一个script标签里的逻辑,其它script访问不到我'
})() 

本身就不会相互影响

闭包

方法名,变量名,类名均不要设置相同

按步骤:
1,在页面中js执行完成后,清除所有变量。(执行此功能的js段设为x)
2,用dom获取每个js,排除x。
3,给每个js加唯一标记s1,s2等, 语法分析,并重写js段内的变量为s1_a,s1_b,s2_a,s2_b。如有函数用类似方法。函数体内的调用也要处理。用dom修改 tag script中的内容。
4,用eval依次执行每个tag script中的内容,排除x。

不明白问这个问题的点在哪里,这种格式的写法确定不会被打吗,想要完全不影响,就是用闭包

使用闭包,让每一个script标签里面的定义的函数默认自动执行一次,就不用担心调用出差的情况了

ID尽量区分 因为ID大于类标签