js中关于声明提前的几个误区
声明提前:
在程序正式执行之前,都会将所有的var声明的变量提前到开始位置,集中创建,而赋值留在原地。
例如这样一段代码
console.log(a)
var a = 100;
console.log(a);
var a = 200;
console.log(a); console.log(b);
b = 10;
console.log(b);
声明提前之后实际上运行的先后顺序是
var a;
console.log(a) //undefined
a = 100;
console.log(a); //
a = 200;
console.log(a); // console.log(b); // ReferenceError
b = 10;
console.log(b); // //只要碰到声明提前的问题,都要先提前,再判断输出
//代码中a变量的声明应提到作用域最前面,注意js中只有全局作用域和函数作用域
// 赋值留在原地,只声明没赋值的为Undefined
// 变量b 没有声明而直接使用 会报错,但是未声明直接赋值的话,js中就会自动为其创建同名变量,再保存数据,不会出错。
// 因此从一个未声明过的变量中取值 会出错
函数中: 在程序执行之前或者函数被调用前,将var声明的变量和function声明的函数提到当前作用域顶部集中创建,赋值留在原地。
注意:
匿名函数 (定义时不指定函数名的函数) 定义完立刻执行,执行完立刻释放,只有确定函数值执行一次时使用,不提前
匿名函数自调:定义在哪儿,就在哪执行,不提前。
js中关于声明提前的几个误区的更多相关文章
- js中变量声明提前
demo1: var a=10; function b(){alert(a); var a=20; alert(a)} b()//undefined 20 因为:js编译器在执行b这个函数时,会把函数 ...
- js函数中变量声明提前
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 【JS点滴】声明提前,变量声明提前,函数声明提前,声明提前的先后顺序
声明提前,函数声明提前,好吧,老生常谈的问题了.正好,前些天在掘金看到一道关于声明提前的笔试题,那么这里就以这道题来作为本文的引子吧,代码如下: console.log(a)//? a();//? ; ...
- JS中函数声明与函数表达式的异同
相同点 注:函数声明和函数表达式的相同点包括但不限于以下几点 函数是一个值,所以和其他值一样,函数也可以进行被输出.被赋值.作为参数传给其他函数等相关操作,不管函数是以什么方式被定义的,当然和其他值的 ...
- JS中函数声明与函数表达式的不同
Js中的函数声明是指下面的形式: function functionName(){ } 这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如 var functionName ...
- JS中var声明与function声明两种函数声明方式的区别
JS中常见的两种函数声明(statement)方式有这两种: // 函数表达式(function expression) var h = function() { // h } // 函数声明(fun ...
- js中变量声明有var和没有var的区别
转js中var用与不用的区别 2015年07月13日 16:08:22 阅读数:3627 Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种 ...
- JS中var声明与function声明以及构造函数声明方式的区别
JS中常见的三种函数声明(statement)方式有这三种: // 函数表达式(function expression) var h = function () { // h } // 函数声明(fu ...
- js中要声明变量吗?
你好,js语言是弱类型语言,无需申明即可直接使用,默认是作为全局变量使用的.建议:在function里时应使用var 申明变量,这样改变量仅仅只在function的生存周期内存在,不会污染到,全局控件 ...
随机推荐
- react native 0.55.4 rctsrwebsocket会崩溃的问题解决 直接原文覆盖
//// Copyright 2012 Square Inc.//// Licensed under the Apache License, Version 2.0 (the "Licens ...
- [原][飞行仿真]helios与dcs world安装,详尽教程
可以参考的博客: http://www.insky.cn/bbs/forum.php?mod=viewthread&tid=58175 http://www.insky.cn/bbs/foru ...
- 博弈论初步(SG函数)
讲解见此博客https://blog.csdn.net/strangedbly/article/details/51137432 理解Nim博弈,基于Nim博弈理解SG函数的含义和作用. 学习求解SG ...
- linux文件名乱码解决
问题描述:公司的FTP服务器早就搭建好,windows客户端可以上传文件到FTP服务器,但是上传去的文件在LINUX目录下文件是乱码. 解决方法:首先编辑/etc/sysconfig/i18n这个文件 ...
- 毕业设计《项目管理》总结06之ajax的初步使用经验
1.ajax页面时不能实现下载功能,因为后台下载功能返回的是一个流,而ajax得到后台的数据只能是字符串或字符,所以实现的方法可以: 例如:用js生成一个form,用这个form提交参数,并返回“流” ...
- 超详细的PDF Expert的注释功能介绍
今天,要给大家很是详细地介绍一下PDF Expert(一款专门在mac上使用的PDF阅读编辑器)的注释功能,让有点健忘的各位小伙伴们通过积极地与文本交互,从而记住更多的专业书内容. 具体使用方法请看以 ...
- http请求requestUtils
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- ElasticSearch踩坑记录
一.分词错误 [2018-02-06 14:28:30:098] --- [INFO] --- [CjhArticleSimilarityTask.java:66] --- [[SimilarityC ...
- 牛客网暑期ACM多校训练营(第七场)Bit Compression
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...
- JVM工具jstat使用说明
输入:jstat -help得到以下帮助信息 Usage: jstat --help|-options jstat -<option> [-t] [-h<lines>] < ...