博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端基础15:JS作用域基础
阅读量:6577 次
发布时间:2019-06-24

本文共 1114 字,大约阅读时间需要 3 分钟。

变量提升

为什么学习变量提升?

  • 知道书写代码的规范
  • 能够更加了解代码在浏览器里的运行机制

什么是变量提升

  • 是一个阶段,在代码运行之前

  • 范围:在当前作用域下

  • 含义:在当前作用域下,代码执行前,对带var关键字和function关键字的进行声明和定义

    • 对var关键字是声明
    • 对function关键字是声明加定义。
  • 函数定义的步骤:

    • 1.首先开辟一个堆内存,假设引用地址是FFF000;
    • 2.将函数体的内容以字符串的形式保存到内存空间种;
    • 3.将引用地址赋值给函数fn,fn代表整个函数;
  • 函数执行步骤:

    • 1.形成一个私有作用域
    • 2.形参赋值
    • 3.变量提升
    • 4.将函数体的内容转换成JS代码,代码从上往下运行

作用域

  • 全局作用域
    • 页面加载时形成,全局变量
    • 全局作用域下,带var和不带var的区别:var m = 13;和m = 13;
      • 不同之处:带var的会进行变量提升,不带var的没有变量提升
      • 相同之处:都是window属性,是全局变量
  • 私有作用域
    • 函数运行时形成,私有的变量:形参,带var关键字的变量
    • 若在私有作用域下有私有变量n,则在这个方法里用到的变量n全是私有变量
    • 作用域查找问题(对不带var的变量进行查找)
      • 1.若是私有作用域有,则是私有的,与外界无关
      • 2.若在私有作用域中没有,则会往上级作用域查找,若还没有,继续往上级查找,直到找到window,若window下也没有则报错
  • 什么是上级作用域?
    • 函数在哪定义的,它的上级作用域就是谁。
    • 和函数定义有关,和函数执行无关。

变量提升细节的知识点

  • 1.只对等号左边的进行变量提升,等号右边的不进行变量提升。
    • 函数表达式执行必须要在函数表达式声明的下面
  • 2.return 后面的内容不进行变量提升,return下面的进行变量提升
    • 函数作为值存在时 不进行变量提升
  • 3.重名变量不会重复声明,但会重复赋值
  • 4.自执行函数本身不进行变量提升
  • 5.不管条件是否成立,对带var关键字进行声明,对function关键字标准浏览器只声明不定义,IE浏览器下声明+定义。

逻辑与(&&)逻辑或(||)

  • 条件判断中逻辑与&&和逻辑或||都会对两边内容进行内容转换成布尔类型
  • 逻辑与&&: 两边都为真才为真,有一为假就是假
  • 逻辑或||:只要有一个真则为真,全假则假
  • 在运算中:
    • &&左边为真则返回右边,左边为假则返回左边
    • ||左边为真则返回左边,左边为假则返回右边

运算符优先级

  • 算术运算符(+-*/%)>比较运算符(>= <= == !=)>逻辑运算符(&& ||)>赋值运算符

转载于:https://juejin.im/post/5b9080dee51d450e964991e5

你可能感兴趣的文章
删除浏览器浏览器删除cookie方法
查看>>
Unity 3D学习笔记(三)——关于脚本
查看>>
说借钱
查看>>
微软URLRewriter.dll的url重写的简单使用(实现伪静态)
查看>>
基于XMPP实现的Openfire的配置安装+Android客户端的实现
查看>>
提高编程技能最有效的方法(转载)
查看>>
leetcode -- Combination Sum II
查看>>
mina高并发短连接导致java.io.IOException: Too many open files解决方案
查看>>
mount nfs 经常出错信息总结(转)
查看>>
[ubuntu] ubuntu13.04安装rabbitcvs管理svn
查看>>
【驱动笔记10】再谈IRP
查看>>
HDUOJ----(1031)Design T-Shirt
查看>>
vector中的find
查看>>
〖Windows〗zigbee实验之cygwin编译tinyos.jar编译出错的解决方法
查看>>
1z0-052 q209_7
查看>>
PIN码计算锦集
查看>>
SharePoint 2013 自定义扩展菜单(二)
查看>>
[Unity3D]再次点击以退出程序
查看>>
架构师的97种习惯
查看>>
PHP 开发 APP 接口 学习笔记与总结 - XML 方式封装通信接口
查看>>