随笔分类 - Web 前端-Javascript(原生)
摘要:隐式全局变量和明确定义的全局变量间有些小的差异,就是通过delete操作符让变量未定义的能力。通过var创建的全局变量(任何函数之外的程序中创建)是不能被删除的。无var创建的隐式全局变量(无视是否在函数中创建)是能被删除的。这表明,在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete操作符删除的,而变量是不能的:// 定义三个全局变量var global_var = 1;global_novar = 2; // 反面教材(function () { global_fromfunc = 3; // 反面教材}());// 试图删除delete gl..
        阅读全文
            
摘要:预解析:var散布的问题(Hoisting: A Problem with Scattered vars)JavaScript中,你可以在函数的任何位置声明多个var语句,并且它们就好像是在函数顶部声明一样发挥作用,这种行为称为 hoisting(悬置/置顶解析/预解析)。当你使用了一个变量,然后不久在函数中又重新声明的话,就可能产生逻辑错误。对于JavaScript,只 要你的变量是在同一个作用域中(同一函数),它都被当做是声明的,即使是它在var声明前使用的时候。看下面这个例子:// 反例myname = "global"; // 全局变量function func()
        阅读全文
            
摘要:创建隐式全局变量的反例就是使用任务链进行部分var声明。下面的片段中,a是本地变量但是b确实全局变量,这可能不是你希望发生的:// 反例,勿使用 function foo() { var a = b = 0; // ...}此现象发生的原因在于这个从右到左的赋值,首先,是赋值表达式b = 0,此情况下b是未声明的。这个表达式的返回值是0,然后这个0就分配给了通过var定义的这个局部变量a。换句话说,就好比你输入了:var a = (b = 0);如果你已经准备好声明变量,使用链分配是比较好的做法,不会产生任何意料之外的全局变量,如:function foo() { var a, b...
        阅读全文
            
摘要:模块模式是JavaScript一种常用的编码模式。这是一般的理解,但也有一些高级应用没有得到很多关注。在本文中,我将回顾基础知识,浏览一些不错的高级技巧,甚至我认为是原生基础的。基础知识首先我们开始简单概述模型模式。三年前Eric Miraglia(YUI)的博文使模型模式众所周知。如果你已经很熟悉模型模式,可以直接阅读“高级模式”。匿名闭包这是一切成为可能的基础,也是JavaScript最好的特性。我们将简单的创建匿名函数,并立即执行。所有函数内部代码都在闭包(closure)内。它提供了整个应用生命周期的私有和状态。(function () { // ... all vars and...
        阅读全文
            
摘要:今天一位网友问了一个闭包的问题,做了以下实验如下:<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>闭包作用域探究</title> </head> <body> <script type="text/javascript"&
        阅读全文
            
摘要:1 <script type="text/javascript"> 2 //适配器模式 3 function ada(str){ 4 config = { 5 'type1':{name:'jack'}, 6 'type2':{name:'longze'} 7 }; 8 9 var currentObj = eval('config.'+...
        阅读全文
            
摘要:题记:入行不久,正则是个很关键的知识点,利用几天的业余时间学习却发现效率不高。还是边学边总结吧,也为和我具有类似情况的同鞋们提供一个参考。总原则:实例配合理论,以理论创建实例,以实例验证理论,理论结合实例透彻理解正则灵活应用正则。正则两个作用:模式匹配、模式替换。定义:var pattern = /s$/ 等价于 var pattern = new RegExp("s$")$匹配字符串的结尾,多行检索中匹配一行的结尾实例1:判断一个字符串是否以“s”结尾 / 将尾部的“s”替换成“--s”var pattern = /s$/ ;alert(pattern.test('
        阅读全文
            
摘要://递归计算阶乘function getFactorial(n){	if(n==0||n==1){ return 1;	}else{ return n*getFactorial(n-1);	}}//递归结成相加function getSum(n){	if(n==1){ return 1;	}else{ return getFactorial(n) + getSum(n-1);	}}//1!+2!+3!+4!+...alert(getSum(4));
        阅读全文
            
摘要:<form id="abc"> dsdfd <input type="submit" value="DD"/></form><script>var f = document.getElementById('abc');f.addEventListener("submit", function(event){event.preventDefault();var d = document.getElementById('efg');d.se
        阅读全文
            
摘要:原生js函数官方文档:http://www.w3school.com.cn/js/jsref_parseInt.asp实例应用:document.write(parseInt('',10)+'<br/>');//NaNdocument.write(Boolean( parseInt('',10) )+'<br/>');//falsedocument.write(parseInt('0.5',10)+'<br/>');//0document.write(Boolea
        阅读全文
            
摘要:废话少说直接上代码:<body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox"> 1、简单数组简单排序 <script type="text/javascript"> var arrSimple=new Array(1,8,7,6); arrSimple.sort(); document.writeln(arrSimple.join()); </script> </div> <div&g
        阅读全文
            
 
                    
                     
                    
                 
                    
                 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号