`

JS作用域和预编译小结

 
阅读更多

1.js在页面加载过程中顺序执行。但是分块预编译、执行。
2.JS 在执行前会进行类似"预编译"的操作,而且先预声明变量再预定义函数。
此时注意,是声明,不是定义,如:var a = 1; 在预编译中,只是执行了"var a"没有赋值,即在预编译结束时a 为undefined。
3.(注意)并不是先全文编译完在执行,而是块编译,即一个script块中,预编译再执行,然后(按顺序)下一个script块,预编译再执行,但此时上一个块中的数据都是可以用的,但下一个块中的函数,声明的变量都是不可用的。
4.变量没声明就引用,会报错,但对象方法,对象变量没声明,是undefined
5.在函数中变量不声明就赋值,会被认为是全局变量,用var声明后为函数变量
6.在执行函数时时也是先编译后执行,但要注意函数定义中(即大括号中)的代码即使有错只要函数不执行,就不会有影响,但一执行函数,开始函数预编译就会出错。

分享到:
评论

相关推荐

    Javascript的匿名函数小结

    3. **作用域**:Function构造函数创建的函数总是作为顶级函数执行,无法访问局部作用域内的变量,而函数字面量则遵循正常的作用域规则。 **三、匿名函数的代码模式** 1. **错误模式**:`function(){ alert(1);}();...

    JavaScript学习小结之被嫌弃的eval函数和with语句实例详解

    需要注意的是,eval执行的代码拥有和调用它的地方相同的变量作用域环境,这意味着它可以通过变量名访问到局部作用域和全局作用域的变量,也可以在其中定义新的变量或函数。例如: ```javascript var result = eval('...

    javascript函数定义的几种区别小结

    总结,JavaScript中定义函数的三种主要方式各有其适用场景,关键字function适合常规函数定义,Function构造函数可以实现函数的动态定义和编译,而函数直接量适合于那些不需要命名且只使用一次的函数。函数直接量和...

    关于Angularjs中自定义指令一些有价值的细节和技巧小结

    如果设置为`{}`,则创建一个隔离作用域,可以通过`@`、`=`和`&`符号与父作用域进行通信: - `@`(字符串绑定):将父作用域的属性值绑定到指令内部的局部变量,只读。 - `=`(双向绑定):创建一个双向绑定,允许...

    精通AngularJS part1

    运用name属性将表单附加到作用域上154 为用户信息表单增加动态行为154 显示验证错误155 让保存按钮无效156 使原生浏览器校验无效157 56在其他表单中嵌套表单157 将子表单作为可重用组件157 57重复子表单158 ...

    JS声明式函数与赋值式函数实例分析

    在JavaScript的预编译阶段,声明式函数会被提升到当前作用域的顶部,这意味着不论函数声明的位置在哪里,它都会在执行任何其他代码之前被解析。因此,即使在声明函数之前调用它,代码也能正常运行,如上述的第一个...

    php网络开发完全手册

    2.2.3 变量的作用域 27 2.2.4 动态变量 29 2.3 运算符和关键字 29 2.4 流程控制语法 30 2.4.1 程序控制语句的简介 30 2.4.2 条件控制语句 30 2.4.3 循环控制语句 33 2.4.4 转移控制语句 35 2.5 表达式 36 2.5.1 简单...

    Angular 1.x个人使用的经验小结

    - `&`绑定:允许父作用域中的函数注入到子作用域,常用于事件触发。 - `=`绑定:实现双向数据绑定。 - `绑定:单向绑定,从父作用域到子作用域。 4、**组件(Component)** 从1.5+版本开始引入,组件是对指令的...

    Flex企业应用开发实战源代码

    3.2.3 Application的作用和主要属性 95 3.2.4 通过SWFLoader加载Application 97 3.2.5 域及跨域访问 99 3.3 Flex Module 101 3.3.1 创建模块 102 3.3.2 模块的编辑与编译 104 3.3.3 模块文件的加载 104 3.3.4...

    PHP函数常用用法小结

    嵌套函数的存在允许代码重用和模块化,但需要注意的是,内部函数的作用域仅限于其所在的外部函数内部。 条件函数是在某些条件成立时才会被定义和使用的函数。这种方式类似于条件编译,可以提高代码的灵活性。在PHP...

    亮剑.NET深入体验与实战精要2

    1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 ...

    亮剑.NET深入体验与实战精要3

    1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 ...

    vue data引入本地图片的两种方式小结

    `import`是ES6的模块导入语法,它可以将模块(包括图片)作为常量导入到当前作用域中。以下是如何在`data`中使用`import`引入图片: ```html import img from '@/images/ICON-electronicbilling.png' export...

Global site tag (gtag.js) - Google Analytics