javascript代码_认识 JavaScript 可执行代码

引言

当 JavaScript 执行的时候,每遇到一个可执行代码就会创建一个执行上下文。了解 JavaScript 可执行代码的种类,对于我们理解执行上下文的概念至关重要。

JavaScript 可执行代码分为 3 类:全局代码、函数代码、Eval 代码。其中,Eval 代码我们并不常用。

117e463f763bc61d02abeb291af7503d.png

全局代码

全局代码是指写在一个 JavaScript 文件中或者嵌入 HTML 中的可被 ECMA 脚本程序处理的源代码文本,这些源代码文本不包括函数体部分的源代码文本。例如,下面的示例是一段全局代码的源代码文本:

let str = 'hello world';function foo() {  // 函数体中的代码  // 不算全局代码}console.log(str); // hello world

函数代码

函数代码是指作为函数体被解析的源代码文本。例如,foo 函数体的源代码文本:

function foo() {  console.log('I like JavaScript'); // 函数代码  console.log('hello world'); // 函数代码}/* *函数代码 *console.log('I like JavaScript'); *console.log('hello world');*/

一个函数代码不包括其嵌套函数的函数代码,例如,foo 函数的函数代码,不包括内部 bar 函数的函数代码:

function foo() {  function bar() {    console.log('hello world'); // bar 函数的函数代码   }  console.log('I like JavaScript'); // foo 函数的函数代码}

如果用 new Function 的方式建立一个函数,调用 Function 构造器时,传入的最后一个参数将被转换成字符串作为函数体。

同样,构造器函数内部嵌套函数的函数代码也不属于构造器的函数代码,例如,sum 函数代码不包括 foo 函数代码:

let sum = new Function(  'a',  'b',   // sum 函数的函数代码  // 但不包括其中 foo 函数的函数代码  'function foo() { return a + b; } console.log(a * b , foo());'); sum(1, 2);

Eval 代码

Eval 代码是指传递给 eval 函数的参数部分的源代码文本,此时参数部分将成为可执行的代码。

调用 eval 时,代码中 eval() 这个调用指令本身属于全局代码的一部分,参数才是 eval 代码:

eval('console.log("hello world");');  // eval 的字符串参数为 eval 代码

总结

JavaScript 可执行代码分为 3 类:全局代码、函数代码、Eval 代码。

  • 全局代码不包括函数体。
  • 函数代码不包括其嵌套函数的函数代码,当用 new Function 构造器创建函数时,最后一个字符串参数为函数代码。
  • eval 函数的参数是 Eval 代码。

文章中图片来源于网络,若有侵权行为,请在后台与我联系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值