`
H小阿飞
  • 浏览: 279551 次
  • 性别: 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>

 

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

分享到:
评论

相关推荐

    在Javascript中Eval函数的使用.doc

    在JavaScript中,`eval()`函数是一个极具争议但又非常有用的工具。它允许我们将字符串作为JavaScript代码来执行,这在某些特定场景下提供了极大的灵活性。然而,这种灵活性也带来了安全风险和性能问题,因此在实际...

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

    eval()函数可以执行字符串中的JavaScript代码,如果我们知道要调用的函数名的字符串,可以将其与括号“()”组合起来形成代码字符串,并用eval()函数执行。示例代码如下: ```javascript function targetFunction() {...

    CSHARP_EVAL_FUNCTION

    在C#中,JavaScript的`eval()`函数是一个非常强大的功能,它允许动态执行字符串作为JavaScript代码。然而,C#本身并没有直接对应的内置方法。在C#中实现类似JavaScript的`eval()`功能,需要通过编译和运行代码字符串...

    Javascript中typeof 用法小结

    在JavaScript编程中,typeof运算符是用于确定未声明变量、已声明变量、字面量等表达式的类型的一个基本工具。...在进行Web开发和后端开发时,理解typeof的用法对于编写类型安全的代码是非常有帮助的。

    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...

    JS函数总结

    理解函数的作用域、`this`关键字、调用方式和递归特性对于编写高效和可维护的JavaScript代码至关重要。函数在JavaScript开发中扮演着核心角色,因此掌握函数相关的高级概念对于提升开发技能有极大帮助。

    JavaScript面试题集锦

    eval函数可以将字符串解析成JS代码并执行。但是,eval函数有两个缺点:不安全和性能问题。因此,在实际开发中应该避免使用eval函数。eval函数可以用来将JSON字符串转换为JSON对象,例如:var obj = eval('(' + str +...

    javascript针对不确定函数的执行方法.docx

    `eval()`函数能够执行一个字符串形式的JavaScript代码。当面对不确定的函数时,可以通过构造包含函数名的字符串,然后传递给`eval()`来尝试执行它。 ##### 示例代码: ```javascript function input1_onChange() {...

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

    在JavaScript编程中,eval函数和with语句是两个较为特殊的构造,它们在特定情况下可以简化代码,但同时因为它们带来的一些问题,常常被开发者所嫌弃。本文将对eval函数和with语句进行详细的实例讲解,以帮助学习者更...

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

    由于eval()可以执行一段JavaScript代码字符串,所以当传入一个函数名时,如果该函数存在则eval()会返回"function"。 例子: ```javascript function isExitsFunction(funcName){ try { if(typeof(eval...

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

    我们可以通过eval函数来执行一个字符串表达式,然后检测返回值的类型。 具体实现方式如下: ```javascript //是否存在指定函数 function isExistsFunction(funcName){ try{ if(typeof(eval(funcName)) == ...

    C#和Javascript动态执行代码

    1. **eval()函数**:JavaScript中最直接的动态执行代码方式就是使用`eval()`函数。例如: ```javascript let userCode = "console.log('Hello, World!');"; eval(userCode); ``` `eval()`会将字符串作为JavaScript...

    对JavaScript的eval&#40;&#41;中使用函数的进一步讨论

    在JavaScript中,`eval()`函数是一个非常特殊且常常引起争议的工具,因为它能够动态地执行字符串形式的JavaScript代码。在本文中,我们将深入探讨`eval()`函数在处理函数时的行为差异,特别是在JScript和Spider...

    JavaScript中的eval&#40;&#41;函数使用介绍

    在JavaScript中,`eval()`函数是一种特殊的功能,它允许开发者通过字符串形式输入JavaScript代码,并执行这些代码。这使得`eval()`成为一种强大的工具,但同时也伴随着一系列的安全与性能问题。 #### 二、eval()...

    js技巧 js错误对照表

    在编程过程中,理解和处理JS错误至关重要,因为它们可以帮助我们识别并修复代码中的问题。以下是一些关于JS技巧和错误对照表的知识点: 1. **基本语法与数据类型** - JS有七种数据类型:Undefined、Null、Boolean...

    JSON序列化与解析原生JS方法且IE6和chrome测试通过.docx

    在提供的代码示例中,展示了一个使用原生JS实现的JSON序列化和解析的方法,这个方法同时在IE6和Chrome下测试通过: ```javascript // 序列化 function toJSON(obj) { var arr = []; for (var key in obj) { var ...

    改善JavaScript程序的188个建议

    JavaScript是一种广泛应用于Web开发的动态编程语言,其性能和代码质量直接影响着网页的运行效率。在优化JavaScript程序时,有以下关键知识点需要注意: 1. **代码结构与执行效率**: - 代码量并不是决定执行速度的...

Global site tag (gtag.js) - Google Analytics