`
H小阿飞
  • 浏览: 274525 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

关于理解JS中typeof和eval函数的代码测试

 
阅读更多

还是由于最近项目中接触到此类js,不是太了解,所以自行敲入了如下代码,自我进行测试,并了解它们。其中部分代码并非原创,有的是直接拷贝网上的。

 

<script type="text/javascript">

/**

 eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。

  如果s语句执行结果是一个值,则返回此值,否则返回undefined
**/

 var query = function() {
            alert("====");
        }
        var node1 = "query";
        var node2 = 8;
        var node3;
        var MM = "My";
        var just = eval(node1);  

        alert(just);
        alert(eval(node2));   // 输出 8
        alert(eval(node3));   //输出 undefined      
        alert(eval("MM"));    //输出 My

        var him,tom,jom;
        him = "query";
        jom = true;
        alert(typeof tom == "function"); //输出false,因为此处tom还不是function类型
        alert(typeof jom == "boolean");  //输出为true,因为jom为boolean类型
        tom = eval(him);   //eval函数根据参数him为string类型,其值为query,则执行query函数,把query function赋给tom,即tom也是function函数了
        alert(typeof (tom));  //输出function  即输出tom的类型
        alert(typeof tom == "function");  //输出true,此处应理解为问tom的类型是否是function类型,为true
        alert(tom == "function");   //输出false,此处应该理解为问tom的值是否为字符串“function”,tom是function函数,值不是字符串,所以为false
        alert(typeof (tom == "function")); //输出boolean,因为tom=="function"为false,false为布尔类型,输出false的类型,即boolean
    </script>
   
    <script type="text/javascript">
        /**
        typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,
        包括number,boolean,string,object,undefined,function.语法为typeof(data) 或 typeof data
   
        instanceof则为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型
        语法为 o instanceof A
        **/
        alert("typeof(1):" + typeof(1));//number
        alert("typeof(\"abc\"):" + typeof("abc"));//string
        alert("typeof(true):" +typeof(true));//boolean
        alert("typeof(2009-2-4):" + typeof(2009-2-4));//number
        alert("typeof(\"2009-2-4\"):" + typeof("2009-2-4"));//string
        alert("typeof(m):" + typeof(m));//undefined
        var d=new Date();
        alert("typeof(d):" + typeof(d));//object
        function Person(){};
        alert("typeof(Person):" + typeof(Person));//function
        var a=new Array();
        alert("typeof(a):" + typeof(a));//object
        alert("a instanceof Array:" + (a instanceof Array));
        var h=new Person();
        var o={};
        alert("h instanceof Person:" + (h instanceof Person));//true
        alert("h instanceof Object:" + (h instanceof Object));//true
        alert("o instanceof Object:" + (o instanceof Object));//true
        alert(typeof (h)); //object
       
        /**
        js中constructor较少使用,如果不是搜索到相关construtor相关的资料,我之前从没有注意到js还有这个函数。
        使用typeof的一个不好的地方就是它会把Array还有用户自定义函数都返回为object
        **/
        var j=2;
        alert(typeof(j));//number
        alert("j.constructor:" + j.constructor);//function …
        alert(typeof(j.constructor));//function

    </script>

 

如果讲得有错误,欢迎纠正!

分享到:
评论

相关推荐

    c# eval 函数

    new EvaluatorItem(typeof(int), "(30 + 4) * 2", "GetNumber"), new EvaluatorItem(typeof(string), "\"Hello \" + \"There\"", "GetString"), new EvaluatorItem(typeof(bool), "30 == 40", "GetBool"), new...

    JavaScript学习小结之被嫌弃的eval函数和with语句实例详解

    那关于eval和with到底是什么情况呢?本文将详细介绍eval&#40;&#41;函数和with语句 eval 定义  eval&#40;&#41;是一个全局函数,javascript通过eval&#40;&#41;来解释运行由javascript源代码组成的字符串 var ...

    javascript实现根据函数名称字符串动态执行函数的方法示例

    本文实例讲述了javascript实现根据函数名称字符串动态执行函数的方法。分享给大家供大家参考,具体如下: [removed] //动态函数调用,调用者使用targetFunction function targetFunction() { alert&#40;11111&#41;;...

    json的介绍 以及 json2.js的用法

    Json2.js 手册 JavaScript使用了ECMAScript语言规范第三版进行了标准化。 JSON是JavaScript面向对象语法的一个子集。由于JSON是JavaScript的一个子集,因此它可清晰的 运用于此语言中。 var myJSONObject = {...

    Coffeescript中文手册

    CoffeeScirpt是什么? 4 初始化安装 5 CoffeeScript语法 6 ...使用typeof 52 使用instanceof 54 使用delete 55 使用parseInt 56 Strict模式 56 Strict模式的不同 56 使用Strict模式 57 JavaScript Lint 58

    js 判断js函数、变量是否存在的简单示例代码

    核心代码 //是否存在指定函数 function isExitsFunction(funcName) { try { if (typeof(eval&#40;funcName&#41;) == "function") { return true; } } catch(e) {} return false; } //是否存在指定变量 ...

    JavaScript语言参考手册

    这些对象同时在客户端和服务器端的 JavaScript 中使用。 Array 属性 方法 Boolean 属性 方法 Date 属性 方法 Function 属性 方法 Math 属性 方法 Number 属性 方法 Object 属性 方法 String 属性 方法 RegExp 属性 ...

    JavaScript中判断函数、变量是否存在

    if (typeof(eval&#40;funcName&#41;) == "function") { return true; } } catch(e) {} return false; } 二、类似PHP常用的判断函数是否存在,不存在则创建 if (typeof String.prototype.endsWith != 'function...

    新浪中用来显示flash的函数

    新浪中用来显示flash的函数,格式化后大家可以用啊sinaflash.js 代码如下:/** * @author [sina]zhangping1@ * @version v1.1.3 * Date:2006-9-8 2006-12-15 */ if(typeof(sina)!=”object”){var sina={}} ...

    微软JavaScript手册

    eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对数的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的...

    javascript文档

    javascript的官方文档 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题...

    javascript中的delete使用详解

    在这篇文章中作者从《JavaScript面向对象编程指南》一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebug)中的表现。 下面翻译其中的主要部分。 …书中...

    JavaScript笔记

    注意:js中的方法可以直接写在代码中,不需要“类”包裹 使用方法:方法名()--&gt;方法调用--&gt;立即执行 2.js文件:网页外专门保存js脚本的文件--推荐 强调:HTML、CSS、JS都要使用UTF-8编码保存(window系统) ...

    Javascript中的delete介绍

    一、问题的提出 我们先来看看下面几段代码,要注意的是,以下代码不要在浏览器的开发者工具(如FireBug、Chrome Developer tool)中运行,原因后面会说明: 为什么我们可以删除对象的属性: 代码如下: var o = { x: 1 ...

    JScript 语言参考

    eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对数的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的...

    gast:Google Apps脚本TAP测试框架

    GasT单元测试文件是定义GAS单元测试案例的javascript文件。 在幕后,每个GAS测试用例只是一个带有描述参数并以TAP格式输出的函数。 if ( ( typeof GasTap ) === 'undefined' ) { // GasT Initialization. (only if...

    javascript语言参考+教程 CHM

    在浏览器中显示信息; 使用消息框; 语言参考; 特性信息; Microsoft JScript 特性 - ECMA; Microsoft JScript 特性 - 非-ECMA; JScript 字母顺序的关健字列表; JScript 错误; JScript 运行时错误; JScript ...

    leetcode分类-blog::cookie:我的博客

    leetcode 分类 生活、工作和兴趣 To Do List 前端 ...基本的表单标签 ...JavaScript JavaScript基础知识 ...typeof ...let可以将变量绑定到所在的任意作用域中(通常是{...}内部) this 浅拷贝(shallow copy)

    js使用小技巧

    取变量类型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 document.getElementsByName("r1"); document.getElementById(id); 定时 timer=setInterval...

Global site tag (gtag.js) - Google Analytics