标签: JavaScript

  • JavaScript闭包

    最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Javascript闭包的真实面目。
    什么是闭包?
    “官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 相信很少有人能直接看懂这句话,因为他描述的太学术。其实这句话通俗的来说就是:JavaScript中所有的function都是一个闭包。不过一般来说,嵌套的function所产生的闭包更为强大,也是大部分时候我们所谓的“闭包”。看下面这段代码: (更多…)

  • 学习Javascript闭包(Closure)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
    下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
    一、变量的作用域
    要理解闭包,首先必须理解Javascript特殊的变量作用域。
    变量的作用域无非就是两种:全局变量和局部变量。
    Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。
    var n=999;
    function f1(){
    alert(n);
    }
    f1(); // 999
    另一方面,在函数外部自然无法读取函数内的局部变量。
    function f1(){
    var n=999;
    }
    alert(n); // error
    这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!
    function f1(){
    n=999;
    }
    f1();
    alert(n); // 999 (更多…)
  • 一个关于JavaScript中函数括号的问题

    <title>01重定向</title>
     <script type=”text/javascript”>
     window.onload=init;
     function init(){
      document.getElementById(“link”).onclick=redirect;
     }
     function redirect(){
      alert(“重定向页面”);
      window.location=”http://www.baidu.com“;
      return false;
      }
    </script>
    </head>

    <body>
    <a href=”test.html” title=”重定向” id=”link”>链接重定向</a>
    </body>
    </html>

    在写这段代码的时候习惯性的将调用init,redirect函数是都加上了括号,无论去掉其中一个都无法得到意想结果,甚至还会出现语法错误。 (更多…)

  • JavaScript内核系列 正则表达式

    相当不错的一个系列中的一章(原文地址),截取如下:

              正则表达式是对字符串的结构进行的形式化描述,非常简洁优美,而且功能十分强大。很多的语言都不同程度的支持正则表达式,而在很多的文本编辑器如Emacs,vim,UE中,都支持正则表达式来进行字符串的搜索替换工作。UNIX下的很多命令行程序,如awk,grep,find更是对正则表达式有良好的支持。

              JavaScript同样也对正则表达式有很好的支持,RegExp是JavaScript中的内置“类”,通过使用RegExp,用户可以自己定义模式来对字符串进行匹配。而JavaScript中的String对象的replace方法也支持使用正则表达式对串进行匹配,一旦匹配,还可以通过调用预设的回调函数来进行替换。

              正则表达式的用途十分广泛,比如在客户端的JavaScript环境中的用户输入验证,判断用户输入的身份证号码是否合法,邮件地址是否合法等。另外,正则表达式可用于查找替换工作,首先应该关注的是正则表达式的基本概念。

               关于正则表达式的完整内容完全是另外一个主题了,事实上,已经有很多本专著来解释这个主题,限于篇幅,我们在这里只关注JavaScript中的正则表达式对象。

    6.1正则表达式基础概念

    本节讨论正则表达式中的基本概念,这些基本概念在很多的正则表达式实现中是一致的,当然,细节方面可能会有所不同,毕竟正则表达式是来源于数学定义的,而不是程序员。JavaScriipt的正则表达式对象实现了perl正则表达式规范的一个子集,如果你对perl比较熟悉的话,可以跳过这个小节。脚本语言perl的正则表达式规范是目前广泛采用的一个规范,Java中的regex包就是一个很好的例子,另外,如vim这样的应用程序中,也采用了该规范。

    6.1.1 元字符与特殊字符

    元字符,是一些数学符号,在正则表达式中有特定的含义,而不仅仅表示其“字面”上的含义,比如星号(*),表示一个集合的零到多次重复,而问号(?)表示零次或一次。如果你需要使用元字符的字面意义,则需要转义。

    下面是一张元字符的表: (更多…)

  • 精通 JS正则表达式(1)

    先复习下~

    […] 位于括号之内的任意字符
    [^…] 不在括号之中的任意字符

    复制 综括号
    /d{2, 4}/ //匹配2到4间的数字.
    /w{3} d?/ //匹配三个单字字符和一个任意的数字.

    本文http://www.javaeye.com/topic/481228
    正则表达式可以:
    •测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证
    •替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字
    •根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字

    (更多…)

  • JavaScript的正则表达式

    1.直接量字符

            在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠()开头的转义序列支持某些非字母字符

     f 换页符
    n 换行符
    r 回车
    t 制表符
    v 垂直制表符
    / 一个 / 直接量
    一个 直接量
    . 一个 . 直接量
    * 一个 * 直接量
    + 一个 + 直接量
    ? 一个 ? 直接量 (更多…)