首页 > 编程语言 >javascript之预编译

javascript之预编译

时间:2023-02-06 13:06:48浏览次数:41  
标签:aa undefined bb 之预 cc javascript alert 编译 var


        Javascript按照<script>段的方式进行预编译处理相关的代码段,并且按照先预定义变量,再预定义函数的方式进行预编译!而且无论变量/函数在段中的任何地点进行显式声明(在变量前加var),都会在所有代码执行前进行预编译,并且变量的值初始为undefined,下面我们使用示例代码来说明整体的预编译情况:
 

<script>
var aa = "dd";
function bb() {
alert(aa);
var aa = "cc";
alert(aa);
}
bb();
</script>

     上面的代码执行中alert的提示 内容为undefined和cc;为什么会是undefined? 根据预编译原则var aa因为有在bb函数中定义,因此他的作用域就是整个bb函数,而且不管它在bb函数的什么地方定义都会是在函数bb的任何代码执行前进行定义好并且赋初值为undefined;定义好变量后,开始进行代码执行,因为alert(aa)是第一行代码,这时aa=undefined,因为alert显示内容为undefined,而第二行(var aa = "cc")等aa = "cc", 为aa赋值为cc,因此后面的alert就显示为cc;
     

 

<script>
function bb() {
alert(aa);
aa = "cc";
alert(aa);
}
bb();
</script>

   以上代码会报错(aa未定义),因为第一个alert之类aa未进行显式的定义(var aa);

<script>
var aa = "aa";
function bb() {
alert(aa);
aa = "cc";
alert(aa);
}
bb();
alert(aa);
</script>

    以上代码返回aa和cc,cc;因为在bb函数中未显式定义变量aa,因此bb函数中访问是函数外层的aa对象,而在bb中改变了aa的值,因此最后外层的aa值变为cc;

<script>
function bb() {
aa = "cc";
alert(aa);
}
bb();
</script>

      以上代码alert会显示cc,因为cc进行了隐式的定义,因此不会报错.

<script>
var aa = "dd";
function bb() {
alert(this.aa);
var aa = "cc";
alert(aa);
}
bb();
</script>

    以上的的结果为:dd和cc,因为this当前的对象为window!

   

标签:aa,undefined,bb,之预,cc,javascript,alert,编译,var
From: https://blog.51cto.com/u_15951492/6038888

相关文章

  • Java反编译工具JD-GUI以及Eclipse的反编译插件
    什么是反编译高级语言源程序经过编译变成可执行文件,反编译就是逆过程。但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。反编译是一个复杂的过程,所以越是......
  • javascript提交示例
    <td>@Html.ActionLink("编辑","Edit",new{id=1})<text>|</text>@Html.ActionLink("删除","Delete",new{id=2})<text>|</text><ahref="javascrip......
  • JavaScript中和动画相关的几个事件
    JavaScript中有以下几种与动画相关的事件:requestAnimationFrame这个事件可以在浏览器重绘之前触发,通常用于制作高性能动画。下面是一个使用requestAnimationFrame来制作简......
  • JavaScript 数组常用方法大全
    前言大家好,我是CoderBin,本次总结了JavaScript中关于数组的一些常用操作,想学习其他方法或者深入学习这些方法的可点击前往MDN-Array。希望对大家有所帮助,谢谢!如果文中有不......
  • 配置管理器设置编译项
    我们的解决方案如果设置了不同的编译选项,后续如果新加了项目,也要设置这些编译项,一定要右键解决方案属性,点击配置管理器,然后找到对应的项目,将编译项对应添加上去,这样在设置......
  • JavaScript 基础知识(四)
    前面已经介绍HTML和CSS,这两个是网页结构和样式,而负责控制网页行为的是javascript。浏览器上直接可以解释执行,而独立运行就需要nodejs集成运行环境。01-JavaScript的基......
  • XMReport 支持通过前端JavaScript生成PDF打印报表
    XMReport支持通过前端JavaScript生成PDF打印报表Hello大家好,XMReport现在新增了通过JavaScript纯前端生成PDF打印报表的特性:1.整个引擎在浏览器端通过JavaScript运行......
  • JavaScript 中获取数组最后一个元素3种方法及性能
    当需要从JavaScript中的数组中获取最后一个元素时,有多种选择,本文将提供3种可用方法。1.数组length属性​​length​​属性返回数组中元素的数量。从数组的长度中减......
  • JavaScript学习笔记—DOM:操作class
    element.classList是一个对象,对象中提供了对当前元素的类的各种操作方法element.classList.add()向元素中添加一个或多个classelement.classList.remove()移除元素中......
  • 【JavaScript】3_深挖数据类型
    4、其他的数据类型布尔值(Boolean)-布尔值主要用来进行逻辑判断-布尔值只有两个true和false-使用typeof检查......