美文网首页
Javascript学习笔记——4.12 表达式计算

Javascript学习笔记——4.12 表达式计算

作者: IFELSE | 来源:发表于2018-03-23 09:33 被阅读0次

    表达式计算就是把一串字符串当做代码解释运行,通过全局函数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
    

    严格模式(use strict)下,eval不可以在局部作用域定义新的变量或函数。

    相关文章

      网友评论

          本文标题:Javascript学习笔记——4.12 表达式计算

          本文链接:https://www.haomeiwen.com/subject/ssrlqftx.html