29 th

September,2010 | JavaScript

JavaScript中eval()函数的一些问题

Tags: ,

首先先来简单介绍一下eval()的用法,它还是比较容易理解的,相信很多朋友都已经熟悉。eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。

另外,因此自己在项目实践过程中,因为解析JSON格式数据的时候,发现对于对象声明语法“{}”的并不能返回一个值,需要用括号括起来才会返回值。
例如:

  1. var oo='"abc" + 123';
  2. var xx='{a:123}';
  3. alert(eval(oo));     //abc123
  4. alert(eval(xx));     //undefined
  5. alert(eval('(' + xx + ')'));    //object对象

因此,在获取Json字符串的时候如果要将其解析为对象,必须用括号括住,才能将其转换为表达式,并返回其值。

Interesting? … Continue Reading… »

25 th

September,2010 | JavaScript

This.作用域.闭包

ppk on javascript

JavaScript是个有点神奇的语言,不过它的一些独有的特性往往让我们初学者感到费解。ThisJavascript语言的一个关键词。不过它到底是指什么呢?很多人都会认为this指的是当前对象。当然,这样理解是没错的,但是在有些情况下仍然会有些问题。在此,我搜集了一些资料,重新学习并整理一下,希望能借此来更好的理解this在JS中的工作方式和使用方法。

  1. var test = function(){
  2.      alert(this);
  3. }
  4. test();
  5. new test();

运行以上代码,你会发现test()和new test()的运行结果是不一样的,test()指向的是Windows对象而new test()才是指向test对象,为什么会有两种不同的运行结果?其实这里就涉及到一个变量作用域的问题,而变量作用域同时又牵涉到闭包(Closure)这个JS特性了,正因为闭包的存在,理解变量作用域就显得非常重要。 Interesting? … Continue Reading… »