js代码片段是什么意思?

在看<<你不知道的Javascript(上卷)>>的第一章(作用域是什么)的时候,有这么一句话:"任何javascript代码片段在执行前都要进行编译(通常就在执行前).因此,javascript编译器首先会对var a = 2;这段程序进行编译,然后做好执行它的准备,并且通常马上就会执行它."

在这句话中javascript代码片段应该指的是var a = 2; 如果我在浏览器的开发者工具中(F12->console)输入了以下代码:

var t = 1, s = 4; 
function sum(a, b) {
  return a+b;
} 
sum(s,t);

(注意输入过程中没有按enter键),是不是意味着整个这一块都是javascript代码片段,会将其整个编译之后再执行?

还有一种情况是把js代码写在一个文件中,那这时的代码片段又是什么?javascript的编译和执行过程又是怎样?

阅读 3.8k
2 个回答

http://blog.csdn.net/u0127632...

在该篇文章中讲代码块的第二个例子时:

<script type="text/javascript">
  alert(str);//因为没有定义str,所以浏览器会出错,下面的不能运行
  alert("我是代码块一");//没有运行到这里
  var test = "我是代码块一变量";
</script>
<script type="text/javascript">
  alert("我是代码块二");//这里有运行到
  alert(test);//弹出"我是代码块一变量"
</script>

注意第二个代码块中的alert(test),应该弹出的是undefined的值,因为在执行代码块1之前,编译器会对var test进行预处理,即在当前作用域(此时当前作用域就是全局作用域)声明一个test变量,但是赋值的操作不会在编译阶段处理,而是在执行阶段处理;又因为在执行alert(str)的时候已经报错,所以将"我是代码块一变量"赋值给test的操作没有执行,所以当前作用域下只有一个test变量并且没有被赋值,所以在第二个代码块中弹出的是undefined.

(仅供参考)我的理解:代码片段为当前作用域中代码,如果执行一个函数,则把这个函数中的代码当作一个代码片段。

var a;
function b(){
 
  var a, c;
}
b()

第一个代码片段(全局):
编译阶段—————声明了变量a,函数b
执行阶段—————运行函数b

第二个代码片段(b函数):
编译阶段—————声明变量a, c
执行阶段—————

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏