还是由于最近项目中接触到此类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()`函数是一个极具争议但又非常有用的工具。它允许我们将字符串作为JavaScript代码来执行,这在某些特定场景下提供了极大的灵活性。然而,这种灵活性也带来了安全风险和性能问题,因此在实际...
eval()函数可以执行字符串中的JavaScript代码,如果我们知道要调用的函数名的字符串,可以将其与括号“()”组合起来形成代码字符串,并用eval()函数执行。示例代码如下: ```javascript function targetFunction() {...
在C#中,JavaScript的`eval()`函数是一个非常强大的功能,它允许动态执行字符串作为JavaScript代码。然而,C#本身并没有直接对应的内置方法。在C#中实现类似JavaScript的`eval()`功能,需要通过编译和运行代码字符串...
在JavaScript编程中,typeof运算符是用于确定未声明变量、已声明变量、字面量等表达式的类型的一个基本工具。...在进行Web开发和后端开发时,理解typeof的用法对于编写类型安全的代码是非常有帮助的。
new EvaluatorItem(typeof(int), "(30 + 4) * 2", "GetNumber"), new EvaluatorItem(typeof(string), "\"Hello \" + \"There\"", "GetString"), new EvaluatorItem(typeof(bool), "30 == 40", "GetBool"), new...
理解函数的作用域、`this`关键字、调用方式和递归特性对于编写高效和可维护的JavaScript代码至关重要。函数在JavaScript开发中扮演着核心角色,因此掌握函数相关的高级概念对于提升开发技能有极大帮助。
eval函数可以将字符串解析成JS代码并执行。但是,eval函数有两个缺点:不安全和性能问题。因此,在实际开发中应该避免使用eval函数。eval函数可以用来将JSON字符串转换为JSON对象,例如:var obj = eval('(' + str +...
`eval()`函数能够执行一个字符串形式的JavaScript代码。当面对不确定的函数时,可以通过构造包含函数名的字符串,然后传递给`eval()`来尝试执行它。 ##### 示例代码: ```javascript function input1_onChange() {...
在JavaScript编程中,eval函数和with语句是两个较为特殊的构造,它们在特定情况下可以简化代码,但同时因为它们带来的一些问题,常常被开发者所嫌弃。本文将对eval函数和with语句进行详细的实例讲解,以帮助学习者更...
由于eval()可以执行一段JavaScript代码字符串,所以当传入一个函数名时,如果该函数存在则eval()会返回"function"。 例子: ```javascript function isExitsFunction(funcName){ try { if(typeof(eval...
我们可以通过eval函数来执行一个字符串表达式,然后检测返回值的类型。 具体实现方式如下: ```javascript //是否存在指定函数 function isExistsFunction(funcName){ try{ if(typeof(eval(funcName)) == ...
1. **eval()函数**:JavaScript中最直接的动态执行代码方式就是使用`eval()`函数。例如: ```javascript let userCode = "console.log('Hello, World!');"; eval(userCode); ``` `eval()`会将字符串作为JavaScript...
在JavaScript中,`eval()`函数是一个非常特殊且常常引起争议的工具,因为它能够动态地执行字符串形式的JavaScript代码。在本文中,我们将深入探讨`eval()`函数在处理函数时的行为差异,特别是在JScript和Spider...
在JavaScript中,`eval()`函数是一种特殊的功能,它允许开发者通过字符串形式输入JavaScript代码,并执行这些代码。这使得`eval()`成为一种强大的工具,但同时也伴随着一系列的安全与性能问题。 #### 二、eval()...
在编程过程中,理解和处理JS错误至关重要,因为它们可以帮助我们识别并修复代码中的问题。以下是一些关于JS技巧和错误对照表的知识点: 1. **基本语法与数据类型** - JS有七种数据类型:Undefined、Null、Boolean...
在提供的代码示例中,展示了一个使用原生JS实现的JSON序列化和解析的方法,这个方法同时在IE6和Chrome下测试通过: ```javascript // 序列化 function toJSON(obj) { var arr = []; for (var key in obj) { var ...
JavaScript是一种广泛应用于Web开发的动态编程语言,其性能和代码质量直接影响着网页的运行效率。在优化JavaScript程序时,有以下关键知识点需要注意: 1. **代码结构与执行效率**: - 代码量并不是决定执行速度的...