代码块和预编译

代码块

在js中,一个代码块指的是一对script标签包含的代码段

需要注意的是,每段代码块都是相互独立的,但是,在上一个代码块定义的全局变量可以在下一个代码块中直接使用,反之不行.

预编译

预编译的作用有两个:

1为扫描所有代码,判断有无语法错误

2为提示,如果没有错误,就进行变量提升函数提升

变量提升和函数提升会把变量和整个函数体放在代码块即script的最前面因此,可以先使用,后定义函数

       注意:不加var的变量不会报错,但也不会进行提升,所以类似如下会报错      

console.log(a);
a= 2;

      提升:提升是预编译的事,他只管提升,不管逻辑问题.逻辑问题是执行时候的事,不归他管

所以,循环中,判断中,函数中,只要有var定义的变量,他都会提升,当然,如果用这样的方式定义的函数 var f = function(){}定义的函数,只提升f,不提升函数体

另外:如果定义一个变量和一个函数,起了一样的名字,console时的结果是函数.因为一等公民.

这里的一些问题,经常会把人搞懵逼.不过,如果懂了 执行上下文  基本是没什么问题的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值