多个script标签的作用域

当页面中存在多个<script>标签时,这时编译器会将多个标签处理成一个还是将多个分开处理呢,

看下面的代码:

  <script>
        alert(a);
    </script>
    <script>
        var a = 123;
    </script>

这段代码会报 Uncaught ReferenceError: a is not defined 的错误,而不是undefined,所以可以看出编译器是按块进行编译的,

也就是说是按script标签一块一块进行编译的,在第一个块中,并没有声明a变量,(这也证明了a变量并没有被声明提前,直到第二个script内部才被提前的。)所以才会弹出这个错误,而不是undefined。

在看一个例子:

 <script>
        var b = 111;
    </script>
    <script>
        alert(b);
    </script>

这段代码的运行的结果是111,这说明了,虽然编译不是同时进行的,但作用域始终还是一个,只是编译器编译的时候是一个块一个块从上向下进行编译的。

时间: 2024-10-23 02:23:35

多个script标签的作用域的相关文章

&lt;script&gt;标签的加载解析执行

转自原文 <script>标签的加载解析执行 看了很多网上的文章,都是大同小异.总结一下.内部原理还没有搞清楚,有机会再学习. 一.<script>标签的加载解析执行顺序 html页面中的<script>标签中的内容(直接写入或者引用外部文件都一样)是以顺序加载执行的,每个<script>标记内容可以当成一个独立的块,同步的情况下一个块加载解析然后执行完后才加载下一块.当然这时也会阻塞其他页面元素的加载.所以网上说的变量调用: <script type

javascript正则找script标签, link标签里面的src或者 href属性

1. [代码]javascript 简单的search    <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(?:\s|.)*?)(?:(?:\/\>)|(?:\>\s*?\<\/script\>)) <script  src="sdfsdf/sdfd.js"          type="text/javascript"  /><scr

js中的script标签

在页面中用script标签引入javascript文件(<script type="text/javascript" src="js文件地址"></script>),浏览器在渲染页面的时候,当读取到script元素时,浏览器不会以HTML或XHTML的方式处理其内容,浏览器会通知浏览器的脚本引擎来接管script元素中的内容.   script元素的type属性定义脚本类型,type类型有: 1.text/ecmascript(表示以ECMA

HTML 5 &lt;script&gt; 标签

HTML 4.01 与 HTML 5 之间的差异 async 属性是 HTML 5 中的新属性. 在 HTML 5 中,不再支持 HTML 4.01 中的一些属性. 提示和注释 注释:脚本按照如下方式执行: 如果 async 属性为 true,则脚本会相对于文档的其余部分异步执行,这样脚本会在页面继续解析的过程中执行. 如果 async 属性为 false,而 defer 属性为 true,则脚本会在页面完成解析后执行. 如果 async 和 defer 属性均为 false,那么脚本会立即执行

关于&lt;Script&gt;标签在html页面放置位置

一般script标签会被放在头部或尾部.头部就是<head></head>里面,尾部一般指<body></body>里,但也有放在</body>闭合标签之后的.究竟这些位置不同有什么不一样呢?下面我来详细说一下:1.<script></script>标签放置在<head></head>标签内部时: 将script放在<head>里,浏览器解析HTML,发现script标签时,会先下载完所

script标签中的async和defer

在程序中代码是一行一行执行的,html标签都是由渲染引擎来执行,代码执行时从上往下一行一行执行,当执行到alert(如下图),alert会阻塞后面代码的执行,当点击完确定之后,代码继续往下执行. javascript的内容同样可在外部进行引用,如下图所示,正常情况下执行结果和上面的内容相同,但当我们给html的script标签中加入async或者defer属性时,代码的执行过程也将会随之改变. async 为异步,顾名思义就是多个人同时做多件事,这里区分sync,sync为同步,就是一个人有序的

javascript基础语法(简介、script标签、严格模式、保留字关键字)

[简介][1]定义:一种专为与网页交互而设计的脚本语言,也就是解释型编程语言.[2]组成: [2.1]ECMAScript由ECMA-262定义,提供核心语言功能(ECMA是欧洲计算机制造商协会) [2.2]DOM文档对象模型,提供访问和操作网页内容的方法的接口 [2.3]BOM浏览器对象模型,提供与浏览器交互的方法的接口 [script标签] [1]使用方式:引入外部文件和在页面内嵌入js代码[2]注意:带有src属性的<script>元素不应该在其<script>标签之间再包含

js 替换 script 标签内容,包括 换行符

这几天在做项目的时候需要用到js替换 script 标签内的内容 用自己写的字符串去匹配都能成功,但是一旦将大串的DOM内容去匹配的时候 却一直提示失败. 上网查了很多资料,一直匹配不了,调试了很久 郁闷的时候,灵光一闪,难不成是换行的问题,一测试,果然如此 var str = 'lkjkjk' +'<SCRIPT type=text/html> abc </SCRIPT>' var reg = /<script.*>.*<\/script>/gi aler

script标签中type为&lt;script type=&quot;text/x-template&quot;&gt;是个啥

写过一点前端的都会碰到需要使用JS字符串拼接HTML元素然后append到页面DOM树上的情况,一般的写法都是使用+号以字符串的形式拼接,如果是短点的还好,如果很长很长的话就会拼接到令人崩溃了. 比如有的时候需要使用弹出框的时候手动使用字符串拼接起来各种数据再渲染出来(这种写法太恶心了,简直没有职业道德-). 因为上面的这种写法太恶心人了,但是在前端渲染数据又是一个刚需,这个时候怎么办,想一个办法将JS和HTML分离开来. <script type="text/x-template&quo