Javascript学习笔记——4.12|Javascript学习笔记——4.12 表达式计算
表达式计算就是把一串字符串当做代码解释运行,通过全局函数eval()
实现此功能。
var str = '5+3'
eval(str) //8
eval()
即是函数也是运算符,它的执行流程如下图文章图片
image.png
eval()
中不仅可以是表达式,也可以声明变量和函数。eval('var x = 10')
eval('function sayHello(name){conlose.log(name+"hello")}')
eval()
使用它所在地方的变量作用域。如果在代码顶层调用eval(代码)
,则代码具有全局变量和全局函数。如果在函数中调用eval(代码)
,则代码具有该函数内的局部作用域。直接调用和间接调用
直接调用时,总是调用eval所在的上下文作用域执行代码;
间接调用(通过var geval = eval 再调用geval(代码))时,不管放在哪只能访问全局作用域,无法访问局部变量和函数。
var geval = eval
var x = 1 , y = 1
function hello(){
var x = 10, y = 10
eval('x++') //访问局部变量
console.log(x) //11
geval('y++') //访问全局变量
console.log(y) //10
}
hello()
console.log(x) //1
console.log(y) //2
【Javascript学习笔记——4.12|Javascript学习笔记——4.12 表达式计算】严格模式(use strict)下,eval不可以在局部作用域定义新的变量或函数。
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 事件代理
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期