zoukankan      html  css  js  c++  java
  • execScript与eval区别

    相同点:

    (1)execScript与eval都可以接收一个字符串,若该字符串是表达式(expression),则执行时将求得该表达式的值并返回;若该字符串是一个或多个语句(statements),则执行时将运行这些语句。

    不同点:

    (1)execScript是IE浏览器独有;eval则是所有浏览器都支持。

    (2)execScript无论是在什么作用域(global/local)内被调用,它所接受到的表达式(expression)或语句(statements)字符串都将在全局作用域内执行(global);eval则是在它被调用时所在的作用域内运行它所接受到的表达式(expression)或语句(statements)字符串。

    先看看eval例子

    1 eval('var global = "global";');//全局作用域内调用eval,则var global = "global";是在全局作用域内被运行的,最终是得到一个global全局变量
    2 (function(){
    3   //这个匿名函数块内生成了一个局部作用域
    4   eval('var local = "local";');//局部作用域内调用eval,则var local = "local";是在局部作用域内被运行的,最终是得到一个local局部变量
    5   console.log(local);//输出local
    6   console.log(global);//输出global,因为它是全局变量
    7 })();
    8 console.log(global);//输出global
    9 console.log(local);//报错,提示local为声明,因为local是局部变量,外部无法访问

    再看看execScript例子

     1 //注意,以下代码必须在IE浏览器下运行
     2 execScript('var global = "global";');//这里声明并初始化了一个global全局变量
     3 (function(){
     4     //这个匿名函数块内生成了一个局部作用域
     5     execScript('var local = "local";');//这里其实还是声明并初始化了一个local的全局变量,不要误认为local是一个局部变量哦。
     6     alert(local);//输出local
     7     alert(global);//输出global
     8 })();
     9 alert(local);//输出local
    10 alert(global);//输出global

    那么如何在不支持execScript函数的浏览器下实现在全局作用内执行字符串呢?这里列出jQuery的实现,其实还是蛮简单的,具体如下:

     1  function globalEval( data ) {
     2     if ( data ) {
     3       // We use execScript on Internet Explorer
     4       // We use an anonymous function so that context is window
     5       // rather than jQuery in Firefox
     6       ( window.execScript || function( data ) {
     7           window[ "eval" ].call( window, data );
     8       } )( data );
     9     }
    10 }
  • 相关阅读:
    Redis数据类型有哪些?
    python---判断元素是否可用 is_displayed/is_enabled/is_selected
    pythone---获取文本链接,text/get_attribute/current_url/title
    python---清空 clear
    python---获取元素 CSS
    JDK安装及配hi环境
    python---获取元素 Xpath
    python---获取元素 id/name/class_name/link_text/partial选择器及注意事项
    python---数据类型----set集合和字典
    web搭建自动化环境
  • 原文地址:https://www.cnblogs.com/bender/p/3362449.html
Copyright © 2011-2022 走看看