首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS if 中函数声明提升

可以看到, 给a赋值5, 并没有赋值到全局变量a上 解决 先看看MDN里说明 ? 从ES6开始 在严格模式下,块里函数作用域为这个块。ES6之前不建议块级函数在严格模式下使用....在ES6非严格模式下, 块中函数声明会出现提升, 所以最好使用函数表达式来定义函数 ---- 走走流程看看到底发生了啥 我们可以先把, function a () {}注释掉, 可以看到报错了, Uncaught...ReferenceError: a is not defined, 所以if里函数声明确实存在变量提升 ?...然后, 我们可以打点调试一下 在if 中a=1语句之前, 我们可以看到函数声明已经提升了, 此时if作用域里a为函数 ? 而全局a还是undefined ?...随后运行a=5, 则只是在块级作用域里赋值, 不会对全局作用域a值进行修改 ---- 当然, 如果使用函数表达式来声明函数的话, 可以避免 var a if (true) { console.log

3.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js函数声明你真的会了吗???

    答案:undefined 30 报错:b is not defined 解析:1、没有用var声明是全局变量,即便在函数内部; 2、只有在function内部新声明才是局部变量,在if,while,...for等声明变量其实是全局变量(除非本身在function内部) 3、因为变量提升,虽然if块内容没执行,但是预解析阶段会执行var a,只是没有赋值而已,因此打印a是undefined而打印b会报错...在任何时代, 教育说起来都是一件高大上事, 但却没有什么真正有价值东西是教得会, 没有任何一种文化模因 可以说清楚一个个体全部问题。...在任何时代, 在一秒钟内看到本质的人, 和花半辈子看不清的人, 自然是不一样命运。 每一天,你将受到才哥理论,结合历史、政治、文化、艺术、商业故事,令人防不胜防高纯度无死角知识轰炸。...那时候相忘于江湖事,或许穿越了时光,有了新世界 那时候不远万里追寻的梦,也许穿行过人海,也有了新意义 而对于我们来说,那个惦念江湖,那个执着梦,其核心都是在偌大世界里,寻找到更真实更好自己

    1.6K20

    js中构造函数和普通函数区别_函数声明函数定义

    大家好,又见面了,我是你们朋友全栈君。 1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2、构造函数和普通函数区别在于:调用方式不一样。...普通函数调用方式:直接调用 person(); b.构造函数调用方式:需要使用new关键字来调用 new Person(); 4、构造函数函数名与类名相同:Person( ) 这个构造函数...A、立刻在堆内存中创建一个新对象 B、将新建对象设置为函数this C、逐个执行函数代码 D、将新建对象作为返回值 6、普通函数例子...:因为没有返回值,所以为undefined 7、构造函数例子:构造函数会马上创建一个新对象,并将该新对象作为返回值返回 8、用instanceof 可以检查一个对象是否是一个类实例...,是则返回true; 所有对象都是Object对象后代,所以任何对象和Object做instanceof都会返回true 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    3.2K10

    JS 声明

    用 var 声明变量作用域是它当前执行上下文,它可以是嵌套函数,也可以是声明在任何函数变量。如果你重新声明一个 JavaScript 变量,它将不会丢失其值。...简而言之, var声明变量只能是全局或者整个函数。 将赋值给未声明变量值在执行赋值时将其隐式地创建为全局变量(它将成为全局对象属性)。...“hoisting”就像是把所有的变量声明移动到函数或者全局代码开头位置。...作用域规则 let声明变量只在其声明块或子块中可用,这一点,与var相似。二者之间最主要区别在于var声明变量作用域是整个封闭函数。...比如: 位于函数或代码顶部var声明会给全局对象新增属性, 而let不会。

    2.5K10

    JS函数声明函数表达式异同

    不同点 注:函数声明函数表达式不同点包括但不限于以下几点 相对函数声明函数表达式之间相同点,它们不同点更应该值得我们关注。下面我结合自己理解聊聊。...-- function body --> } 函数声明会提前 函数声明是在预执行期执行,就是说函数声明是在浏览器准备执行代码时候执行。...; })() 事实上,js解析器对函数声明函数表达式并不是一视同仁地对待。...对于函数声明js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型变量一样,只在执行到某一句时也会对其进行解析,所以在实际中,它们还是会有差异,具体表现在,...当使用函数声明形式来定义函数时,可将调用语句写在函数声明之前,而后者,这样做的话会报错。

    1.2K50

    JavaScript(js函数声明函数表达式区别

    在JavaScript中,函数是经常用到,在实际开发时候,我想很多人都没有太在意函数声明函数表达式区别,但是呢,这种细节东西对于学好js是非常重要。...函数声明函数表达式用代码写出来是这样: //函数声明 function say(){ console.log("函数声明") } //函数表达式 var say1 = function(){...首先,在函数调用方面,看下面的代码 say(); //函数声明 function say(){ console.log("函数声明") } 这样执行结果是什么呢?...答案是打印出“函数声明”,那你看下面的代码 say1(); //函数声明 function say(){ console.log("函数声明") } //函数表达式 var say1 = function...一起来看看,首先我们先说第一种,函数声明调用,函数声明调用这个其实不用讲你就知道,函数声明了嘛,哪里都可以调用(function会有预解析,预解析之后函数就存在了,所以那里都能调用它了)。

    81230

    JS函数声明函数表达式不同

    Js函数声明是指下面的形式: function functionName(){ }         这样方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如: var functionName...= function(){ }         可能很多朋友在看到这两一种写法时会产生疑惑,这两种写法差不多,在应用中貌似也都是可行,那他们有什么差别呢?       ...事实上,js解析器对函数声明函数表达式并不是一视同仁地对待。...对于函数声明js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型变量一样,只在执行到某一句时也会对其进行解析,所以在实际中,它们还是会有差异,具体表现在,...当使用函数声明形式来定义函数时,可将调用语句写在函数声明之前,而后者,这样做的话会报错。

    1.4K20

    函数(三)(函数声明

    函数声明 C语言函数调用要求是先定义后使用,就是要求被调用函数定义在主调函数之前。 如果在程序中自定义函数时,需要将被调函数定义在主调函数后面,就需要函数调用之前加上函数原型声明。...如果在函数调用之前既无函数定义,也无函数声明,编译时会出错。 函数原型声明一般形式: 类型说明符 函数名(形式参数声明列表); 例:定义计算圆面积函数,在主函数中输入半径并计算面积。...return ; } double circle(double radius) { return PI * radius * radius; } 函数声明函数名后面的圆括号中可以只给出形参类型...,省略形参名称。...例如本例中第5行函数声明可以写成如下形式: double circle(double); 如果在源程序文件开头部分,所有函数定义前面进行函数声明,则该源程序文件中所有的函数都可以调用被声明函数

    64810

    JS函数表达式和函数声明你混淆了吗?

    1.函数表达式vs函数声明 函数声明函数表达式是使用 function 关键字创建函数2种方法。...其原因是sumA是使用函数声明创建,该函数声明在当前作用域中创建一个函数变量(具有与函数名称相同名称)。...现在,我们更深入地研究函数声明函数表达式行为。...函数声明会创建一个函数变量:一个与函数名称同名变量(例如,上一个示例中sumA)。 在当前作用域中(在函数声明之前和之后),甚至在函数作用域本身内,都可以访问该函数变量。...由于提升,函数变量在函数声明之前可用。 2.1 函数声明注意事项 函数声明语法作用是创建独立函数函数声明应在全局作用域内,或直接在其他函数作用域内: // Good!

    74430

    delay函数用法及声明

    Sleep函数一般形式: Sleep(unisgned long); 其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 例:...语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。...参数 micro_seconds 为要暂停毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。...只是一般情况下,延迟时间数量级是秒时候,尽可能使用sleep()函数。 且,此函数已被废除,可使用nanosleep。 如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。...这样才能最佳利用CPU时间 delay: 函数名: delay 功 能: 将程序执行暂停一段时间(毫秒) 用 法: void delay(unsigned milliseconds);

    1.4K10

    Kotlin:02-函数声明

    一、函数声明基本格式 在上一篇文章中,我们在创建Intellij IDEA 和 Eclipse 编译环境时已经写过 HelloWorld 代码,具体代码为: fun main(args: Array...名称自定义,你想叫啥就叫啥 args 该函数参数。如果某个函数有多个参数,使用逗号间隔 : 声明参数类型声明符。...) 这是函数主体,你想让函数实现什么功能就写出对应代码即可 以上就是 函数声明基本格式,以后我们在声明函数时候也需要遵守上面的格式。...2、函数有返回值 (1)、显示声明返回值类型 如果某个函数有返回值,那么就需要在函数声明声明其返回值类型,示例代码如下: fun sum(a: Int, b: Int): Int { return...a + b } 在上面的代码中,我们定义了一个 求和函数,接收两个 Int 类型参数,返回值是两个参数和,由于得到和 是 Int 类型数据,所以该函数返回值类型就是Int,这个返回值类型就需要在函数声明

    60330

    【JavaScript】函数 ① ( 函数引入 | 函数声明 | 函数调用 )

    , 使代码更加清晰和易于维护 ; 函数 目的 就是 重复使用代码 ; 使用函数 就是 声明函数 和 调用函数 ; 2、函数声明 在 JavaScript 中 , 使用 function 关键字 声明函数...; 函数定义语法格式 : // 声明 JavaScript 函数 function functionName(parameter1, parameter2, ...) { // 函数体:执行代码块...是 传递给函数 形式参数列表 , 这些 形式参数 在 函数体代码中 可与作为局部变量使用 ; 代码示例 : // 声明函数 function hello(name) {...字符串 ; 3、函数调用 函数声明后 , 本身不会自动执行 函数体中代码 , 只有 调用函数后 , 才会执行 函数体代码 ; 函数调用 语法格式 : functionName(argument1, argument2...是传递给函数 实参列表 , 该 实参列表 与 函数定义 形参列表一一对应 , 这些实际参数值值将替换函数定义中形式参数 , 并在函数执行时 作为 函数 局部变量 使用 ; 4、代码示例 - 函数声明调用

    14610

    【说站】js声明变量提升

    js声明变量提升 1、var声明变量将提升到当前作用域顶部,而不是全局。只有声明提升,赋值不提升。不使用var声明变量默认挂在全局对象window下。...2、如果是函数变量提升,相当于var add; add = function...。...);   // 只有变量会提升 console.log(typeof(a)); // undefined,a为变量提升 console.log(typeof(b)); // function,b为具名函数...,函数整体提升 var a = function() {  } function b() {  } 由于变量增加,sum将被提升到函数第一行varsum;因此,第一个log是undefined。...以上就是js声明变量提升,希望对大家有所帮助。更多js学习指路:js教程 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

    2.2K40

    6.3 被调用函数声明函数原型

    为了让大家有个明确学习方向,请大家分享给有需要的人,谢谢!...一、被调用函数需要具备条件 (1)首先被调用函数必须是已经定义函数(是库函数或者用户自己定义函数) (2)如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到信...息“包含”到本文件中来 (3)如果使用用户自己定义函数,而该函数位置在调用它函数后面,应该在主调函 数中对被调函数声明 二、函数声明 一般形式 (1)函数类型 函数名(参数类型...1 参数名1,参数类型2 参数名2,...参数类型n 参数名n) (2)函数类型 函数名(参数类型1,参数类型2,...参数类型n) 注意:如果已在文件开头(在所有函数之前),已经对本文件中所调用函数进行了声...明,则在个函数中不必对其所调用函数再作声明 原创不易,未经本公众号允许禁止转载,否则追究法律责任

    1.3K3229
    领券