泄露你的JavaScript技术很烂的五个表现

Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态、如此被广泛使用、如此根植于我们的生活中的另外一种语言。它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类型。其实,你和Javascript都站错了立场,而现在,你让Javascript很生气。这里有五个原因能说明你的Javascript技术很烂。

1. 你没有使用命名空间

是否还记得在大学里老师告诉你不要在家庭作业里使用全局变量?Javascript里的全局变量的使用方法也不例外。Web网页稍不留神就会变的混乱不堪、到处都是从互联网上各个角落里找来的乱糟糟的相互侵犯的脚本和脚本库。如果你把一个变量命名成loader(),那你是成心自找麻烦。如果你在无意识的情况下重载了一个函数,Javascript根本不会提醒你。你还把它叫做一种学前教育编程语言,还记得吧?我要说的是,你需要知道在做了这些后发生什么情况。


  1. function derp(){ alert(“one”); }  
  2. function derp(){ alert(“two”); }  
  3. derp(); 

“two”,答案是“two”。并不是一定会这样,它也可能是“one”。所以,把你所有的代码都放在自己的命名空间里,这很容易。下面是定义自己的命名空间的一个简单做法。


  1. var foospace={};  
  2. foospace.derp=function(){ alert(“one”); }  
  3. function derp(){ alert(“two”); }  
  4. foospace.derp(); 

2. 你在变戏法,你把变量定义的东一个西一个

你使用莫名其妙的数字字母组合作为变量名是一个双输的结局。在40行的代码块中寻找一个不带任何表意的字符变量,对于维护工作来说简直是场噩梦。把对变量的第一次声明混合到一个40行的代码块里同样也是一场噩梦。即使你自己遇到这样的变量时,你也要不由的问自己:“这是在哪里定义的?”,然后迅速的使用Ctrl+F组合在源代码里寻找这个变量最初定义的位置。不,不要这样,相反,这是对Javascript的滥用,是一种愚蠢的做法。你应该始终把变量定义在它的使用范围的顶部。并不能说因为这不是必须的,你就可以不这样做。


  1. function(){  
  2. var a,//description  
  3. b; //description  
  4. //process…  

3. 你没有理解JavaScript的变量范围

你是个天才的程序员,你吃的是C++、拉的是List。你知道什么是变量范围,你对你的变量有完全的控制,你就像太上皇似的的注视着它们。然而,Javascript却在你的咖啡里拉了一泡屎,并且大笑不止。


  1. var herp=”one”;  
  2. {  
  3. var herp=”two”;  
  4. }  
  5. alert(herp); 

在这种情况下你得到的herp不是“one”,而是“two”。Javascript的变量有效范围并不是跟其它语言一样依赖于代码块。Javascript的变量范围是以函数为基础的。每个函数都有它自己的变量范围,Javascript这一点上表现的很酷,根本不理睬这毫无意义的花括弧包起来的范围。事实上,Javascript是如此的酷,以至于你甚至可以将变量范围像命名空间或变量那样进行传递。

4. 你以为JavaScript的面向对象特征只是嫁接而来的

Javascript,自从呱呱落地起,它就是一个面向对象的语言。所有的东西在Javascript里都是对象,所有的!甚至数字和字符这样的文字符号都可以通过它自身固有的构造器转化成对象。跟其它面向对象的语言比起来,Javascript的不同之处在于,它没有类(class)。Javascript对象像函数那样定义,甚至函数自己也是对象。Javascript有个属性叫做prototype,所有对象里都内置了这个属性,你可以通过它来改变对象的构造,修改对象、添加更多的变量、更多的功能。


  1. var derp; //will hold a Herp instance  
  2. var Herp= function(){  
  3. this.opinion=”Javascript is cooler than BASIC.”;  
  4. }  
  5. Herp.prototype.speak=function(){ alert(this.opinion); }  
  6. var derp= new Herp();  
  7. derp.speak(); 

如果这个看起来跟你毫不相干,我愿意介绍我的好朋友Google给你,Google擅长于帮助人们学习知识。面向对象对于我这篇简短的、低姿态的文章来说实在是个太大的话题。

5. 你使用“new”关键字时就像是盲人瞎马

Javascript肯定是你的初恋女友,因为你显得无所适从。如果你想像真人那样取悦Javascript,你需要去了解对象符号。除了在需要实例化一个对象,或罕见的需要延时加载数据的情况外,你基本上不需要使用new关键字。在Javascript里分配大量的new变量地址是一项很慢的操作,为了效率起见,你应该始终使用对象符号。


  1. var rightway= [1, 2, 3];  
  2. var wrongway= new Array(1, 2, 3); 

是否还记得我说过Javascript的变量范围是以函数为基础的?是否还记得有人说Javascript的对象像函数那样定义?如果你不使用new关键字来声明一个对象,你将会使这个对象成为全局范围内的对象。所以,永远使用new关键字来声明对象是一个好习惯。


  1. var derp=”one”;  
  2. var Herp=function(){  
  3. this.derp=”two”;  
  4. }  
  5. var foo=Herp();  
  6. alert(derp); 

如果你这样写,Javascript并不会在意,而你真正弹出的答案是“two”!有很多方法可以防止对象做出这样的行为,可以以使用instanceOf,但更好的方法是正确的使用new关键字,这样显得更专业。

现在你知道你的Javascript代码写的很烂了吧,如果你记住了上面所说的东西,你的代码就会有所改善。我喜欢用3个tab键来缩进代码,我喜欢用下划线来连接单词,我喜欢把函数名首字母大写来表示它是对象。当然,这个是另外一场讨论了。有很多原因会导致你的Javascript代码写的很烂,就像我有很多技术很烂一样,所以,尽情的在评论里表达你的意见,支持,反对,不吝赐教。

原文链接:http://www.aqee.net/2011/04/13/5-reasons-your-javascript-stinks/

【编辑推荐】

  1. 九个令人惊叹的HTML 5和JavaScript实验
  2. 8个令人惊叹的JavaScript效果的网站
  3. JavaScript学习笔记 有问有答
  4. 10个令人惊奇的HTML5和JavaScript效果
  5. 20个令人恐怖的JavaScript导航技术

【责任编辑:陈贻新 TEL:(010)68476606】

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 对象
, 变量
, 一个
, 范围
, 技术很烂
javascript关键字
javascript 内存泄露、冰箱氟利昂泄露的表现、内存泄露的表现、姬玉露烂根的表现、泰住持照片泄露,以便于您获取更多的相关知识。

时间: 2024-08-03 05:44:31

泄露你的JavaScript技术很烂的五个表现的相关文章

【观点】能说明你的Javascript技术很烂的五个原因

译文链接:能说明你的Javascript技术很烂的五个原因

能说明你的Javascript技术很烂的五个原因分析_javascript技巧

它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类型.其实,你和Javascript都站错了立场,而现在,你让Javascript很生气.这里有五个原因能说明你的Javascript技术很烂. 1. 你没有使用命名空间. 是否还记得在大学里老师告诉你不要在家庭作业里使用全局变量?Javascript里的全局变量的使用方法也不例外.Web网页稍不留神就会变的混乱不堪.到处都是从互联网上各个角落里找来的乱糟糟的相互侵犯的脚本和脚本库.如

说明你的Javascript技术很烂的五个原因_javascript技巧

本文是从 5 Reasons Your Javascript Stinks 这篇文章翻译而来. Javascript在互联网上名声很臭,但你又很难再找到一个像它这样如此动态.如此被广泛使用.如此根植于我们的生活中的另外一种语言.它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类型.其实,你和Javascript都站错了立场,而现在,你让Javascript很生气.这里有五个原因能说明你的Javascript技术很烂. 1. 你没有使

史蒂夫·乔布斯的打字技术很烂

几乎没有人注意到苹果前总裁史蒂夫·乔布斯的打字技术很烂. 程序员基本上都练就了敲代码时不需要看键盘.事实上,如果每个5秒你都要看一看"B"在键盘上的什么位置,那你很难说是一个好的程序员. 然而,我们大家都知道,史蒂夫·乔布斯完全不是一个对编程在行的人.而且,下面的视频中显示的他的打字能力就是个有力的说明. 看到没有,他是盯着键盘的,而且动作十分慢.他找不到他想要的字母,他甚至移动头部来寻找应该敲击哪个键. 这并不是我不喜欢史蒂夫·乔布斯的理由.这只是这个超级大苹果的另一个瑕疵,我想把这

Javascript技术技巧大全(五)

javascript|技巧 //POST代替FORM <SCRIPT language="VBScript"> Function URLEncoding(vstrIn)     strReturn = ""     For i = 1 To Len(vstrIn)         ThisChr = Mid(vStrIn,i,1)         If Abs(Asc(ThisChr)) < &HFF Then             st

Javascript技术技巧大全(五)_javascript技巧

//POST代替FORM  <SCRIPT language="VBScript">  Function URLEncoding(vstrIn)      strReturn = ""      For i = 1 To Len(vstrIn)          ThisChr = Mid(vStrIn,i,1)          If Abs(Asc(ThisChr)) < &HFF Then              strReturn

《JavaScript技术开发大全》分享

问题描述 第1章JavaScript概述JavaScript是一种面向对象的.描述性的客户端脚本语言,可以插入到HTML(超文本标记语言)代码中,由浏览器解析并运行.JavaScript语言是将静态网页变为动态网页的语言.使用JavaScript可以在网页中创建动态效果,并能与用户或服务器进行互动.1.1JavaScript的介绍客户端的脚本语言有很多种,JavaScript是使用最多的一种,不同的脚本语言之间存在着差异,但这些脚本语言的共同点都是作用在客户端,让客户端的浏览器解析并执行.1.1

你最深爱的编程语言其实很烂

我最近写了几篇比较严肃的博客,是关于一些沮丧的事情,结果我开始有些忧郁.很严重.所以,我想应该说些比较轻松的事情.我要做的就是数落大家最喜欢的编程语言.你会问我为什么,为什么要搞这种恶作剧?亲爱的朋友,我能想出三种理由. 1. 我无聊,没有更好的事情去做. 2. 我自命不凡,坐在家里,深知即使我侮辱了你编程最喜欢用的语言,你也拿我没折.除非你能发明出这样的东西: 3. 我忘了第三个理由是什么,但我敢肯定,那一定是一个非常有趣的理由. 好了,不再浪费口舌,你最深爱的编程语言其实很烂. 1. C语言

Javascript技术栈中的四种依赖注入小结_基础知识

作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道经久不衰.比如在J2EE中,就有大名鼎鼎的执牛耳者Spring.Javascript社区中自然也不乏一些积极的尝试,广为人知的AngularJS很大程度上就是基于DI实现的.遗憾的是,作为一款缺少反射机制.不支持Annotation语法的动态语言,Javascript长期以来都没有属于自己的Spri