JavaScript学习系列博客_21_JavaScript 变量、函数的提前声明
变量的提前声明(全局作用域)
- 我们知道js的代码是自上而下执行的。如下,console.log(a)在var a=10前面,但是结果输出的是undefined。
- 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值);也就是说在执行代码之前凡是var 声明的变量都已经是存在了,就已经是在栈内存中了。
- 但是如果声明变量时不适用var关键字,则变量不会被声明提前,会报错。
函数的提前声明(全局作用域)
- 创建一个函数有3中方式,其中函数声明方式和上边var 声明变量是类似的。在没有声明函数f1的时候就调用,而声明在后面。
- 但是其他方式创建一个函数不行。例如表达式方式创建函数是会报错的,var f2;f2这个变量是一件有了,但是还没执行到赋值那里,所以f2后边加个(),这样就是一个变量加个()而已,肯定会报错啊。
函数作用域中的提前声明
- 在函数作用域也有声明提前的特性。
- 使用var关键字声明的变量,会在函数中所有的代码执行之前被声明。在输出a的时候,a已经被声明但是没有赋值所以结果是undefined。
- 在函数中(函数作用域),不使用var声明的变量都会成为全局变量。在全局作用域中的c赋值为30,调用函数f6,输出c,在函数作用域中没有使用var 声明变量c,所以找上一级作用域的c输出,结果为33,由于函数作用域中的c没有var 声明,所以是一个全局变量,跟外面是同一个c,赋值为10,所以从值30变成了10。
- 函数声明也会在函数中所有的代码执行之前执行。
- 创建函数时定义形参就相当于在函数作用域中声明了变量。
JavaScript学习系列博客_21_JavaScript 变量、函数的提前声明的更多相关文章
- JavaScript学习系列博客_1_JavaScript简介
这个系列博客主要用来记录本人学习JavaScript的笔记,从0开始,即使有些知识我也是知道的.但是会经常忘记,干脆就写成博客,没事的时候翻来看一看,留下一点学习的痕迹也好.可能写博客的水平暂时不太好 ...
- JavaScript学习系列博客_24_JavaScript 原型对象
原型(prototype) - 创建一个函数(所有函数)以后,解析器都会默认在函数中添加一个属性prototype prototype属性指向的是一个对象,这个对象我们称为原型对象. 创建一个函数My ...
- JavaScript学习系列博客_17_JavaScript中的函数的参数、返回值
数的形参(形式参数) - 定义函数时,可以在()中定义一个或多个形参,形参之间使用英文逗号隔开:定义形参就相当于在函数内声明了对应的变量但是并不赋值,形参会在调用时才赋值. 函数的实参(实际参数) - ...
- JavaScript学习系列博客_3_JavaScript中的变量、常量、标识符
常量:就是改变不了的,也是可以直接使用的. 变量:可以改变的,不确定的. var =123456; 通过 var 声明一个变量,同时赋值给它 标识符:在JS中所有的可以自主命名的内容,都可以认为是一个 ...
- JavaScript学习系列博客_18_JavaScript中的匿名函数
匿名函数 - 用函数声明的方式创建一个函数时,不加函数名称. function sum(){ console.log("我是函数sum")} - 不加名称,这样写浏览器是会报错的. ...
- JavaScript学习系列博客_16_JavaScript中的函数(Function)简介
函数(Function) - 函数也是一个对象,也具有普通对象的功能 - 函数中可以封装一些代码,在需要的时候可以去调用函数来执行这些代码:当调用函数时,函数中封装的代码会按照顺序执行. - 使用ty ...
- JavaScript学习系列博客_20_JavaScript 作用域
作用域 - 作用域指一个变量的作用的范围 - 在JS中一共有两种作用域 1.全局作用域 - 直接编写在script标签中的JS代码,都在全局作用域- 全局作用域在页面打开时创建,在页面关闭时销毁 - ...
- JavaScript学习系列博客_19_JavaScript中方法(method)
方法 - 听了不少调用什么什么方法,所以方法究竟是啥东西? - 如果一个函数作为一个对象的属性保存,那么我们称这个函数时这个对象的方法,调用这个函数就说调用对象的方法(method). 创建一个对象 ...
- JavaScript学习系列博客_7_JavaScript中的逻辑运算符、三元运算符
逻辑运算符 ! 非 - 非运算可以对一个布尔值进行取反,true变false false边true - 当对非布尔值使用!时,会先将其转换为布尔值然后再取反 - 我们可以利用 !! 来将其他的数据类型 ...
随机推荐
- Problem H: 质心算法
Description 在很多应用中,需要对某个目标进行定位.比如对于一个未知坐标的点A,假定已知A点与N个点相邻,且已知N个相邻点的坐标,则可取N个点的质心作为A点坐标的一个估计值. 所谓质心,就是 ...
- GridMask:一种数据增强方法
GridMask Data Augmentation, ARXIV 2020 代码地址:https://github.com/akuxcw/GridMask 这篇论文提出了一种简单的数据增强方法,在图 ...
- pandas之cut
cut( )用来把一组数据分割成离散的区间. cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_low ...
- 【Laravel】为Eloquent 模型设置全局作用域和局部作用域进行查询
全局作用域 所谓「全局作用域」,指的是预置过滤器在注册该「全局作用域」的模型类的所有查询中生效,不需要指定任何额外条件. 以 User 模型类为例,我们在系统中可能只想针对已经验证过邮箱的用户进行操作 ...
- PHP mysqli_thread_safe() 函数
定义和用法 mysqli_thread_safe() 函数返回是否将客户端库编译成 thread-safe. 语法 mysqli_thread_safe();高佣联盟 www.cgewang.com ...
- MySQL(8.0.19版本的下载和安装)、window10
mysql的下载 MySQL官网:https://www.mysql.com/ 下载地址:https://dev.mysql.com/downloads/installer/ MySQL 8.0参 ...
- 为什么switch不支持long
switch 支持的类型 在 Java 语言规范里中,有说明 switch 支持的类型有:char.byte.short.int.Character.Byte.Short.Integer.String ...
- SSM三大框架的整合
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 在Java后端开发领域,Spri ...
- 正确的使用HttpClient
快捷的网络请求,多用HttpClient 但是常规的写法会一大片的TIME_OUT 比如这样的例子 static async Task<string> TestHttpClient(str ...
- 符合AUTOSAR(AP&CP)的嵌入式系统和软件设计工具
AUTOSAR Builder功能介绍 AUTOSAR Builder 是达索旗下一种基于 Eclipse 的开放性.可扩展工具套件,用于设计和开发符合 AUTOSAR 标准的系统和软件.最新版本20 ...