作用域

作者: 海子小夜曲 | 来源:发表于2018-12-11 19:37 被阅读0次

作用域(一定要掌握好 面试题 题海战术)

1,作用域: 变量起作用的区域,也就是说变量可以被访问到的区域。

2,变量种类

*全局变量 :在script标签下不在任何函数内生命的变量称为全局变量

作用范围是整个页面,生命周期跟页面一样。页面销毁才没了

*局部变量: 在函数内声明的变量,称为局部变量

作用范围是再指定的函数内,函数执行完毕就会被销毁。(内存中占用的资源回收)

3,词法作用域:静态作用域。再js预解析阶段,确定变量的作用域。

在词法作用域中规定,变量的作用域由其定义的位置决定,而不是使用的位置。

在词法作用域下,只有函数可以限定作用域。

变量的搜索原则

1,首先在当前作用域查找,如果找到就直接使用该变量的值。停止查找。

2,如果没有,就往上一层找,如果有就是用,停止。

3,没有 继续找。一直到全局作用于。如果找到就是用。否则,就抛出引用异常。

作用域链

1函数可以限定作用域,而且可以嵌套使用。所以会产生作用域链式结构

2,script标签所限定的全局作用域为 0 级链

在该链上如果遇到函数,就引申出另一条作用域链,级别为当前级别+1;

以此类推。

3,高级练可以访问同一条链上的低级链的数据。但是反之则不行。同级链上的数据不能互相访问。

在访问不存在的变量时,不仅会报错。性能还会降低。

js预解析(主要是面试题)

1,语法分析: 分析js代码是否满足js语法的定义。如果在分析某行时,检查出不符合语法规则就直接在语法分析阶段(预解析阶段)抛出语法异常

目的:保证js代码符合语法规则,能被正确执行。

2,变量名以及函数名提升

在变量名和函数名提升时,是将变量的定义以及函数的定义包括函数的实现都提升到当前作用域的最顶端

函数名提升时,相当于定义一个变量即该函数的名字,在把函数的引用赋值给该变量

函数有形参时。就相当于 var a; 函数体里有var a;就会被忽略。

3,确定变量的作用域。 按照链 找

TIPS

window对象 自带undefined属性,其值为undefined。

window.undefined=undefined

in

1.语法:‘proName’ in对象

*in 运算符 左边的参数类型 必须是字符串 不是会隐式转换成字符串

*in 右边的参数 类型必须是对象,不是会隐式转换,如果转换失败会抛出异常。

2,功能: 判断对象是否能访问proName属性,如果是自己本身的属性 或者是继承下来的 都会返回true。

猪八戒网站

相关文章

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

  • [ES6]1.1作用域

    作用域 全局作用域(global/window) 函数作用域/局部作用域(function) 块状作用域({}) ...

  • C - 作用域

    C - 作用域 一个 C 变量的作用域可以是: 块作用域 函数作用域 函数原型作用域 或 文件作用域 作用域描述程...

  • JavaScript作用域分类

    JavaScript作用域分类全局作用域局部作用域函数作用域块级作用域catchwithlet 和 const 什...

  • JS基础---05作用域

    JavaScript基础 1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作...

网友评论

      本文标题:作用域

      本文链接:https://www.haomeiwen.com/subject/zinehqtx.html