数表达式和函数申明引起

[javascript]  view plain  copy
  1. 1.函数申明  
[javascript]  view plain  copy
  1. syHi();  
  2. function syHi() {  
  3.     console.log("HI!");  
  4. }  
[javascript]  view plain  copy
  1. 2.函数表达式  
[javascript]  view plain  copy
  1. // sy();//此处会报错,sy是undefined  
  2. var sy = function name() {  
  3.     console.log("sy");  
  4. }  
  5. sy();  

都知道js中函数的定义有两种方式--函数表达式和函数申明

但是这两个是有区别的,函数申明js会在代码执行之前把申明读取,然后syHi也不会报错,

而函数表达式不一样,代码顺序执行,sy会报错。

这方面还是有些疑惑,所以去找了点资料。

FunctionDeclarations become ready-to-use functions. That allows to call a function before it’s declaration.

Variables start as undefined.

All assignments happen later, when the execution reaches them

FunctionDeclarations变成可以使用的功能。 这允许在声明之前调用一个函数。
变量从未定义开始。

所有的任务都在稍后执行,当执行到达他们时

所以js会先遍历代码,遇到var会把变量提升为undefined,遇到有名函数也会提升,

但是遇到无名变量和不用var定义的变量会是在么样的呢?

AND有名函数提升之后,是怎么提升?(是只是有了函数这个名的空间地址,还是提升的时候也已经把函数内部代码加载)

syHi遇到之后,若提升的时候没有加载函数,是在遇到之后第一次加载内部代码吗?

不用var定义的变量,在执行到(eg:a = 1;)时才有a变量。

[javascript]  view plain  copy
  1. //1.函数申明不用写在前面 而表达式一定要  
  2. syHi();  
  3. function syHi() {  
  4.     console.log("HI!");  
  5. }  
  6. // sy();  
  7. var sy = function name() {  
  8.     console.log("sy");  
  9. }  
  10. sy();  
  11. //2.对于变量var 与 无“var”区别  
  12.   
  13. if(a == undefined){  
  14.     var a = 1;  
  15.     console.log(a);  
  16. }else {  
  17.     console.log("a not exist");  
  18. }  
  19.   
  20. if (b == undefined) {//ReferenceError: b is not defined  
  21.      b = 1;  
  22.     console.log(b);  
  23. else {  
  24.     console.log("b not exist");  
  25. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值