<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Javascript on 庞玉栋个人博客</title><link>https://pangyd.com/tags/javascript/</link><description>Recent content in Javascript on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 11 Jul 2018 08:57:38 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/javascript/index.xml" rel="self" type="application/rss+xml"/><item><title>JavaScript容错的优雅地降级功能</title><link>https://pangyd.com/post/191-javascript/</link><pubDate>Mon, 25 Jun 2018 19:32:47 +0800</pubDate><guid>https://pangyd.com/post/191-javascript/</guid><description>&lt;p>探测到错误时禁用组件是一回事。处理出错的组件并将其从UI中优雅地移除是另一回事。即使我们努力保持组件之间松耦合，但涉及到DOM时，这项工作会变得很有难度。例如，我们是否真的可以在不影响周边元素的情况下移除出错组件的DOM元素呢，或者这样做是否会更好——将元素保留在原处，只是将它们隐藏并禁用所有的JavaScript处理函数？&lt;/p>&lt;p>我们采取的实现方式取决于我们在构建什么，即应用的本质。有的应用采用合理的方式组合组件和布局页面，使得添加和移除功能甚为方便。不要以为视觉设计只是一块可以从系统中随意拆除的皮肤，不会带来任何后果。理论上说，它应该独立于系统的其他部分，但实际上，这种思想是不可行的。页面元素的布局对扩展是有影响的，例如，当组件出错时，我们是否能够在不影响系统其他部分的情况下，将他们禁用或修复。&lt;/p>&lt;p>我们可将处理出错组件的过程比喻成关机，因为这通常涉及一系列的操作——以便优雅降级。功能很少整体失效，通常是某个组件失效，导致功能不正常。例如，路由器出错并导致某个功能失效。此时，除了关闭失效的路由处理器，我们还需要关闭该功能涉及的一系列其他组件，将它们从UI中移除，并提示错误信息。我们应为任何功能考虑和测试这种关机流程。我们要保护的不是功能本身，而是移除功能后系统的剩余部分。&lt;/p>&lt;p>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E">&lt;/p></description></item><item><title>Java 和 JavaScript 的关系！</title><link>https://pangyd.com/post/118-java-javascript/</link><pubDate>Fri, 29 Sep 2017 20:28:20 +0800</pubDate><guid>https://pangyd.com/post/118-java-javascript/</guid><description>&lt;p>&lt;br>&lt;/p>&lt;p style="text-align: center">&lt;span>58的姚总曾出现这么个尴尬事&lt;/span>&lt;br>&lt;/p>&lt;p style="text-align: center">&lt;br>&lt;/p>&lt;p style="text-align: center">&lt;img data-s="300,640" data-type="jpeg" data-src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" class="" data-ratio="2.2" data-w="440" src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p style="text-align: center">&lt;br>&lt;/p>&lt;p style="text-align: center">&lt;span>强行装逼失败&lt;img data-src="https://pangyd.com/uploads/2017/09/1d9ea9ee6040df52.png" data-ratio="1" data-w="20" _width="20px" src="https://pangyd.com/uploads/2017/09/1d9ea9ee6040df52.png" class="" data-fail="0">&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>&amp;nbsp;这 JavaScript 和 Java 有啥区别&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>据说还有很多人不知道&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>于是，猿妹找了一堆形象生动的解答&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>来给大家科普一下两者区别！！&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>答案有这样的&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>↓↓↓&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;img data-s="300,640" data-type="jpeg" data-src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" class="" data-ratio="0.8317152103559871" data-w="309" src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p style="text-align: center">&lt;span>这样的&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;span>↓↓↓&lt;/span>&lt;/p>&lt;p style="text-align: center">&lt;img data-s="300,640" data-type="jpeg" data-src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" class="" data-ratio="0.4451754385964912" data-w="912" src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p style="text-align: center">&lt;img data-s="300,640" data-type="jpeg" data-src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" class="" data-ratio="0.62" data-w="600" src="https://pangyd.com/uploads/2017/09/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p style="text-align: center">&lt;br>&lt;/p>&lt;p style="text-align: center">最形象当属这样的&lt;/p></description></item><item><title>java和JavaScript究竟是什么关系？</title><link>https://pangyd.com/post/105-javajavascript/</link><pubDate>Sun, 17 Sep 2017 21:27:42 +0800</pubDate><guid>https://pangyd.com/post/105-javajavascript/</guid><description>&lt;p>&lt;span>犹记得刚刚接触Java的时候，有一天突然看见了JavaScript，第一反应就是：这是什么?跟Java这么像，莫非它俩之间有什么不可告人的关系?&lt;/span>&lt;/p>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" title="【java和javascript究竟是什么关系？】" alt="【java和javascript究竟是什么关系？】">&lt;br>&lt;p>这就得从他们诞生时开始说起：&lt;/p>&lt;p>1994年的时候，网景公司(Netscape)发布了Navigator浏览器0.9版。这是历史上第一个比较成熟的网络浏览器，&lt;a target="_self" href="https://pangyd.com/">轰动一时&lt;/a>。但是，这个版本的浏览器只能用来浏览，不具备与访问者互动的能力。因此，网景公司急需一种网页脚本语言，使得浏览器可以与网页互动。1995年Sun公司将Oak语言改名为Java，正式向市场推出，并且打出了“一次编写，到处运行(Write once，run anywhere)”的宣传口号。网景公司非常看好Java，决定与Sun公司结成联盟。仅一个月后，网景公司做出决定，未来的网页脚本语言，必须看上去与Java足够相似，但是比Java简单。程序员Brendan Eich被指定为这种“简化版Java语言”的设计师。&lt;/p>&lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='120'%3E%3Crect width='480' height='120' fill='%230E1012' stroke='%231B1E22'/%3E%3Ctext x='240' y='66' fill='%235C6069' font-family='monospace' font-size='13' text-anchor='middle'%3E%5B%E5%8E%9F%E5%9B%BE%E5%B7%B2%E5%A4%B1%E6%95%88%5D%3C/text%3E%3C/svg%3E" alt="">&lt;br>&lt;p>但是Brendan Eich对Java丝毫没有兴趣，用了10天时间就设计出了JavaScript。总体的设计思路是：(1)借鉴C语言的基本语法;(2)借鉴Java语言的数据类型和内存管理;(3)借鉴Scheme语言，将函数提升到“第一等公民”(first class)的地位;(4)借鉴Self语言，使用基于原型(prototype)的继承机制。也就是说，Java Script在设计时所参考的对象不包括 Java，而包括了像 Self 和 Scheme 这样的语言，它实际上是函数式编程和面向对象编程两种语言风格的混合产物。并且javascript最初的名字并不是javascript，而是LiveScript，名字中的“Java”是经过SUN Microsystems公司授权的。&lt;/p>&lt;p>简单说java和JavaScript是两个不同的语言。&lt;/p>&lt;p>1 语言特点：&lt;/p>&lt;p>1.1 弱类型：&lt;/p>&lt;p>JavaScript在变量声明的时候并不严格区分数据类型，(var 变量名)，不像java那样严格(类型：变量名)。也就说，Javascript面前一切平等，在他眼里大家都是人，而在java就有所不同，男人、女人、什么的……&lt;/p>&lt;p>基于这个特性，javascript在很多时候会都可以写的比java简洁，比如函数的声明等。&lt;/p>&lt;p>1.2 动态语言：&lt;/p>&lt;p>java在定义了一个数组的长度以后就不能再改变了，但是javascript却可以。并且java一个数组只能放同一种类型，但javascript可以在一个数组内加不同数据类型的数据。可以说Java比较死心眼，javascript则比较灵活。&lt;/p>&lt;p>1.3 脚本语言:&lt;/p>&lt;p>Java等后台语言都是编译后执行的，但是javascript却是边编译边执行。&lt;/p>&lt;p>2 数据类型&lt;/p>&lt;p>2.1 基础数据类型：&lt;/p>&lt;p>Java有八大数据类型：byte,short,intlong,float,double,char,Boolean。感觉javascript把上面的整理成了三种原始类型：number,string,boolean。另外还有两个特殊的原始类型是：null和undefined。&lt;/p>&lt;p>2.2 变量&lt;/p>&lt;p>Java：数据类型 变量名=值;&lt;/p>&lt;p>Javascript：var 变量名=值;数组&lt;/p>&lt;p>Java：&lt;/p>&lt;p>类型[] 数组名=new 类型[数量];&lt;/p>&lt;p>类型[] 数组名=new 类型[]{元素1，元素2…};&lt;/p>&lt;p>Javascript：&lt;/p>&lt;p>var 数组名=[];&lt;/p>&lt;p>var 数组名=new Array();&lt;/p>&lt;p>3 函数：&lt;/p>&lt;p>Java：返回值&lt;a target="_self" href="https://pangyd.com/">类型&lt;/a> 函数名(类型 参数1，类型 参数2…){}&lt;/p>&lt;p>Javascript：function 函数名(参数1，参数2…){}&lt;/p>&lt;p>两者用途&lt;/p>&lt;p>java广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和&lt;a target="_self" href="https://pangyd.com/">互联网&lt;/a>等。&lt;/p></description></item></channel></rss>