javascript代码_认识 JavaScript 可执行代码
引言
当 JavaScript 执行的时候,每遇到一个可执行代码就会创建一个执行上下文。了解 JavaScript 可执行代码的种类,对于我们理解执行上下文的概念至关重要。
JavaScript 可执行代码分为 3 类:全局代码、函数代码、Eval 代码。其中,Eval 代码我们并不常用。
全局代码
全局代码是指写在一个 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 代码。
文章中图片来源于网络,若有侵权行为,请在后台与我联系。
javascript代码_认识 JavaScript 可执行代码相关推荐
- javascript原型_使用JavaScript的示例报告卡Web应用程序原型
javascript原型 Hi! At times, beginners always find it hard getting the application of the theory they ...
- javascript 模板_了解JavaScript中的模板文字
javascript 模板 The author selected the COVID-19 Relief Fund to receive a donation as part of the Writ ...
- 打字游戏代码_下一个打字稿代码的5大专业技巧
打字游戏代码 JavaScript与TypeScript (JavaScript vs TypeScript) JavaScript started its journey a few decades ...
- vscode中怎样格式化js代码_如何在Visual Studio代码(VSCode)中格式化代码
回答(30) 2 years ago 对于那些想要自定义要格式化的JavaScript文件的人,可以使用 JSfiles 属性上的任何扩展名同样适用于HTML . { "beautify.o ...
- javascript教程_最好JavaScript教程
javascript教程 JavaScript is the most widely used scripting language on Earth. And it has the largest ...
- 史上最烂代码_历史上最大的代码库
史上最烂代码 Here's a diagram of the biggest codebases in history, as measured by lines of code: 这是历史上最大的代 ...
- html5网页中的表格教程,javascript程序设计_达内javascript教程-达内web前端培训
JavaScript基础 - 输出星星 var oT1 = document.getElementById('txt1'); var oT2 = document.getElementById('tx ...
- javascript 注入_注入JavaScript牟利:如何检测和阻止撇取者
javascript 注入 In 2019 British Airways was fined a remarkable £183 million for a data breach of its s ...
- 一段堆栈溢出的代码_为什么堆栈溢出的代码片段会破坏您的项目
一段堆栈溢出的代码 Stack Overflow has been the saviour of many programmers, including me. Some of us have nev ...
- python测验5 函数和代码_测验5: 函数和代码复用 (第5周)-单选题
1.以下选项不是函数作用的是: A. 提 ...
最新文章
- 使用VScode开发ESP8266,PlatformIO开发ESP8266
- Oracle 数据库数据排名函数:rank() 和dense_rank() 。
- SSH三大框架注解整合(二)
- JDBC的开发流程是什么?
- 开发工具链(国内项目)(持续更)
- 安卓模拟器切换横屏之后怎么返回竖屏
- 服务器存储满了进不去系统,解决PC常见问题 篇四十五:建议收藏!手贱升级进不去系统?两步简单恢复黑群晖!...
- 虚幻引擎2D游戏开发教程系列
- 华为小程序怎么弄出来_华为手机窗口小程序 华为窗口小程序怎么弄出来
- 键盘无响应-如何修复键盘注册表
- 微信聊天自动解析html文本,微信小程序纯文本实现@功能
- 线性代数之从线性方程组看线性组合
- 视频处理指定颜色的提取
- 【音频处理】视频加速音频不变调
- C语言进阶(牟海军)
- [原创]手把手教你Linux下的多线程设计--Linux下多线程编程详解(一)
- BOM操作(浏览器对象模型)
- 海信将在柏林IFA推出屏幕发声激光电视
- 12864c语言接温度计,单片机万年历+温度计+12864LCD液晶显示 仿真+程序
- C语言小函数——atol(自己实现)
热门文章
- Spring Aop中@Pointcut用法
- mysql中文乱码--存入mysql里的中文变成问号的解决办法
- webpack手动构建vue和vue-cli构建使用 px2rem-loader ,全局自动转换px单位,让自适应来的更简单点!...
- 如何创建带有.的文件夹
- Python学习-生成器
- 通过JS语句判断WEB网站的访问端是电脑还是手机
- 陕西西咸新区沣西新城大数据产业发展思考
- ImportError: No module named matplotlib.pyplot
- Cisco实例1—构建高可用性DM×××网络2—方案设计
- S3C6410 SD卡启动uboot分析(详细)