周末正好有空就研究了下汤姆大叔的js系列博客,虽然只是学到点皮毛,依然获益匪浅。不得不说大牛的境界岂是吾等小辈可理解。

变量:

js有隐含的全局概念,意味着不声明的所有变量都是全局对象的属性。

function sum(x,y){
var res = x + y;
return res;
}

以上隐式声明全局变量的做法会多出一个全局命名空间,这显然不是我们想要的。

function sum(x, y) {
var res= x + y;
return res;
}

所以记住始终使用var声明变量。

funtion num(){
var a = b = 0;
}

以上链式声明变量依然是隐式声明全局变量。有朋友可能会疑惑,在局部里声明的变量怎么就变全局变量了!

但结果就是:a是局部变量,b是全局变量。

这是因为这个从右到左的赋值,首先是赋值表达式b = 0,但b没有声明,自然b就成全局变量了;然后再把0返回给声明了的a。这跟如下的代码同理:

function num(){
var a = {b = 0};
}

所以一次先声明所有需要声明的变量是比较好的习惯,并且在函数的顶部使用链式分配会更加容易阅读与修改:

function(){
var a,b;
}

var的另一个比较少用一点的就是:

用var声明的全局变量是不能被delete删除的;而没用var声明的全局变量是能被delete删除。

// 反例
myname = "global"; // 全局变量
function func() {
alert(myname); // "undefined"
var myname = "local";
alert(myname); // "local"
}
func();

这是一个比较少注意到的问题,就是var声明不是放在函数顶部所造成的未定义。你可能会以为第一次弹窗会弹出'global',其实是undefined。

原因是myname被当做了局部变量,而第一个alert时该变量还未声明。等同于以下代码:

myname = "global"; // global variable
function func() {
var myname; // 等同于 -> var myname = undefined;
alert(myname); // "undefined"
myname = "local";
alert(myname); // "local"}
func();

顺便提一下代码是怎么处理的:第一阶段是解析变量以及函数和参数等,第二阶段才是执行代码。

for循环:

平常我们使用for循环一般是如下形式:

for(var i=0 i<arr.length; i++){
console.log(arr[i]);
}

但更好的办法是先缓存集合或者数组的长度:

var i,arrLen;
for(i=0,arrLen=arr.length;i<arrLen;i++){
...
}

还可以进一步优化的部分就是用i--代替i++,原因是向下数到0通常会更快:

var i;
for(i=arr.length;i--;){
...
}

或者是使用while:

var i = arr.length;
while(i--){
...
}

这些优化只会体现在性能上,实际项目中才能体现威力。

深入js之基本语法的更多相关文章

  1. 在MyEclipse中如何去掉JS或jsp语法错误提示!

    在MyEclipse中如何去掉JS或jsp语法错误提示! 关于在 MyEclipse 上 WEB 工程里面的 JS/JSP 经常会有语法错误提示,这是由于 MyEclipse 对其语法要求相当严格所造 ...

  2. 【每天半小时学框架】——React.js的模板语法与组件概念

           [重点提前说:组件化与虚拟DOM是React.js的核心理念!]        先抛出一个论题:在React.js中,JSX语法提倡将 HTML 和 CSS 全都写入到JavaScrip ...

  3. 基础常用JS函数和语法

    100多个基础常用JS函数和语法集合大全  来源:http://www.cnblogs.com/hnyei/p/4605103.html 网站特效离不开脚本,javascript是最常用的脚本语言,我 ...

  4. Vue.js:模版语法

    ylbtech-Vue.js:模版语法 1.返回顶部 1. Vue.js 模板语法 Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vu ...

  5. 100多个基础常用JS函数和语法集合大全

    网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统 ...

  6. 什么是js和js的基本语法

    时间:2016年12月15日 先讲讲基础语法: 大部分是来操作表单: js动态效果和数据交互(ajax?) js也有自己的API js大部分的DOM操作都是针对input的. 案例学习,对注册页面的简 ...

  7. 梳理一下JS的基本语法

    web三层结构来说 结构层:HTML         从语义角度,描述页面结构 样式层:CSS         从审美的角度,美化页面 行为层:JavaScript   从交互的角度,提升用户体验   ...

  8. [JS] javascript基础语法

    W3CSchool全套Web开发手册:点击下载 1.javascript是什么 js是具有面向对象能力的,解释性的程序设计语言. 2.js的类型 [基本类型]:string number boolea ...

  9. 常用原生JS函数和语法集合

    luoyishan-2017-10-08 1. 输出语句:document.write(""); 2. JS中的注释为// 3. 传统的HTML文档顺序是:document-> ...

  10. JavaScript(JS)基本语法(一)

    https://www.cnblogs.com/haiyan123/p/7577598.html 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入 ...

随机推荐

  1. shell中调用jenkins API批量运行历史任务

    shell中调用jenkins API批量运行jenkins带参数的任务: #!/bin/sh #startdate=20150127 startdate=20150201 while [ " ...

  2. jsp页面都放在web-inf下面说是要防止用户直接访问jsp页面,为么不能直接访问jsp

    为了保护那部分jsp页面,如果没有登录验证,那部分jsp用户可以直接访问,这样很不安全,放在WEB-INF下面,就使得只能WEB-INF文件夹外jsp页面调用里面的jsp,这样来使用,就比如我们有一个 ...

  3. 使用oracle9的 odbc 连接oracle11

    客户机上基于Oracle 9i的ODBC数据源,无法连接oracle 11G数据库,提示错误为:error ORA-01017, Invalid Username / Password.奇怪的是:sq ...

  4. (zxing.net)二维码QR Code的简介、实现与解码

    一.简介 二维码QR Code(Quick Response Code)是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字 ...

  5. 【timeisprecious】【JavaScript 】JavaScript对象

    JavaScript 对象 var a=[];console.log(new Boolean(a)); VM1319: Boolean {true} undefined var a=[];consol ...

  6. Python数据采集处理分析挖掘可视化应用实例

    距离上一次发Python的技术贴已经过去两年了,这两年大法初成,并在知乎谢了相关技术专栏.现在搬运如下,均为原创,转载需注明出处哦! https://zhuanlan.zhihu.com/p/2957 ...

  7. jmeter+ant+jenkins+mac报告优化(一):解决Min Time和Max Time显示NaN

    一.在上篇博客中生成的报告有两个问题: 1.date not defined 2.Min Time和Max Time显示成了NaN 二.Jmeter+Ant报告生成原理: 1.在Jmeter的extr ...

  8. ionic 项目 随笔

    1,首先 会进入src/index.html, <!-- The polyfills js is generated during the build process --> <sc ...

  9. [RHEL] RHEL7.0 下 Postfix + Dovecot 实现邮件发送

    RHEL7.0 下 Postfix + Dovecot 实现邮件发送 一.前言 大家都对邮件服务(mail service)很感兴趣嘛.我在自己 博客站 预言了自己会实战一次,访问量一天到十几(毕竟平 ...

  10. linux中rc.d目录下的文件

    参考 http://blog.sina.com.cn/s/blog_414d78870102vqj5.html http://www.360doc.com/content/12/0820/17/933 ...