首页
学习
活动
专区
工具
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( ) 这个构造函数...,Person 既是函数名,也是这个对象类名 5、内部用this 来构造属性和方法 function Person(name,job,age) { this.name=name;...A、立刻在堆内存中创建一个新对象 B、将新建对象设置为函数this C、逐个执行函数代码 D、将新建对象作为返回值 6、普通函数例子...,是则返回true; 所有对象都是Object对象后代,所以任何对象和Object做instanceof都会返回true 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    3.2K10

    JS 声明

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

    java构造函数方法声明无效_如何构造函数

    大家好,又见面了,我是你们朋友全栈君。 一、什么是构造函数 Java构造函数,也叫构造方法,是JAVA中一种特殊函数。与函数名相同,无返回值。...这些,我们就可以将这些天然属性和行为定义在构造函数中,当new实例化对象时,也就具有这些属性和方法,不用再去重新定义,从而加快编程效率。...构造函数是对象一建立就运行,给对象初始化,就包括属性,执行方法语句。 而一般函数是对象调用才执行,用 “.方法名” 方式,给对象添加功能。 一个对象建立,构造函数只运行一次。...new对象时,就调用与之对应构造函数,执行这个方法。不必写“.方法名”。...super必须写在方法首行。如果这里写super(),则调用是父类中Student()方法

    1.6K40

    函数(三)(函数声明

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

    64910

    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-函数声明

    ) { println("HelloWorld") } 那么,接下来我们来解析一下这个main函数(也可叫做 main方法格式,具体如下: 字段 含义 fun 用来声明一个函数...名称自定义,你想叫啥就叫啥 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、代码示例 - 函数声明调用

    14710
    领券