函数中声明变量不用Var的情况

简介: 我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句。看一段代码function f(){    alert(a);    a = 3;}f(); //error: a is not defined只有函数内部...

我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句。

看一段代码

function f(){
    alert(a);
    a = 3;
}
f(); //error: a is not defined

只有函数内部执行到a = 3时,a才会成为全局变量并且等于3,因为这个函数不可能执行到这句语句,所以error: a is not defined

 

再看一段代码

(function(){  

    bar();

    bar=function(){

            alert("1")}        

     }

)();

依旧是:Uncaught ReferenceError: bar is not defined

 

相关文章
|
JavaScript 前端开发
什么是函数?函数分为几种,如何声明?区别是什么?
什么是函数?函数分为几种,如何声明?区别是什么?
70 0
初识go变量,使用var和:=来声明变量,声明变量的三种方式
这篇文章介绍了Go语言中使用`var`和`:=`声明变量的三种不同方式,包括声明单个或多个变量、通过值确定数据类型以及在函数体内使用`:=`声明局部变量。
初识go变量,使用var和:=来声明变量,声明变量的三种方式
|
29天前
|
编译器 C语言
变量的声明与定义区别
变量的声明是指预先告知编译器变量的名称和类型,但不分配内存;而定义则是声明的同时在内存中分配空间,可以初始化。简单来说,声明是告诉编译器“有这么一个东西”,定义是“创建并使用这个东西”。
85 11
|
3月前
【函数】函数的声明和定义
【函数】函数的声明和定义
|
5月前
|
JavaScript 前端开发
JavaScript中的变量提升(Hoisting)将`var`声明和函数声明提前到作用域顶部,允许在声明前使用
【6月更文挑战第25天】JavaScript中的变量提升(Hoisting)将`var`声明和函数声明提前到作用域顶部,允许在声明前使用。`let`和`const`不完全提升,存在暂时性死区(TDZ),尝试在初始化前访问会出错。函数声明会被提升,但函数表达式不会。
47 3
|
5月前
|
JavaScript 前端开发
JavaScript语法关键点:变量用`var`、`let`、`const`声明
【6月更文挑战第22天】JavaScript语法关键点:变量用`var`、`let`、`const`声明;七种数据类型包括`Number`、`String`、`Boolean`、`Null`、`Undefined`、`Symbol`和`Object`;运算符如算术、比较、逻辑和赋值;流程控制有`if...else`、`switch`和各种循环。了解这些是JS编程的基础。
58 3
|
6月前
|
JavaScript 前端开发 编译器
let 或 const 来声明变量的区别
let 或 const 来声明变量的区别
|
6月前
函数的声明
函数的声明
|
JavaScript 前端开发
JavaScript const 变量必须在声明时赋值
JavaScript const 变量必须在声明时赋值
152 0
|
Go Python
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)
86 0
Go-变量与常量详解(声明、初始化、匿名变量、作用域等)