那些容易忽略的事(2) - 可选的末尾分号

一般情况下,我们都不会写末尾的分号,因为在javascript中会自动补全分号,但是补全是有条件的。补全规则是:当前语句无法与下一句合并解析时才添加分号

1、第二行以"("、"["、"+"、"-"、"/"开头时,很有可能会被解析到一起,如:

var a=1+2
(a).toString()
解析结果:var a=1+2(a).toString() //TypeError: 2 is not a function

规则如此也有例外:

1、return、break、continue语句不能分行写

var a=function(){
  return
   true
}
解析成:
var a=function(){
  return;
   true;
}
a()---//返回undefinde

ps:函数没有return值或者return参数为空时,函数执行函数体中的语句,并返回undefindebreak:跳出循环体,结束循环continue:跳出当前循环,进入下一次循环。

2、++或--

var a=b=1;
var c=a
      ++
       b
//会被解析成var c=a;++b;

ps:运算顺序
++a:先自增,再运算
a++:先运算,再自增

var a=b=0;
alert(a++) //0---a=1
alert(++b) //1---b=1
时间: 2025-01-07 00:27:53

那些容易忽略的事(2) - 可选的末尾分号的相关文章

容易被忽略的事----sql语句中select语句的执行顺序

关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象,所以也就没有答上来,现在整理一下吧,希望提醒自己,也能够帮到其他的朋友.如下: (8) SELECT (9)DISTINCT (11) <TOP_specification> <select_list> (1) FROM <left_table> (3) <join_

那些容易忽略的事(1) -变量与运算符+

1.变量 //作为变量 alert(x); //ReferenceError: x is not defined typeof x; //undefined var y; alert(y); //undefined typeof y; //undefined //作为属性 alert(window.x); //undefined typeof window.x; //undefined var a={} alert(a.x); //undefined typeof a.x; //undefine

那些容易忽略的事3-(变量提升和函数提升)

1.变量提升:只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部: console.log(a); //undefined var a; 2.函数提升:只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部: console.log(b); //function b(){} function b(){}; 从上可以看出,变量或函数声明都会别放到当前作用域的顶部,那么问题来了:如果变量和函数重名那么熟轻

eclipse中使用svn同步的时候忽略项目配置等文件

背景 项目开发中,如果使用SVN来管理代码,每次与服务器同步时,每次都看到一堆.class,.log,target等文件,这样很不爽. 解决办法 全局设置 打开:window-->preferences-->team-->Ignored Resource-->Add Pattern(或者点击window-->preferences-->然后直接搜索ign-->再点击) 忽略文件夹: 如忽略build文件夹,就Add Pattern,填入build 忽略文件: 如忽

BOM之history对象

前面的话 history对象保存着用户上网的历史记录,从窗口被打开的那一刻算起.由于安全方面的考虑,开发人员无法得到用户浏览器的URL,但借由用户访问过的页面列表,可以在不知道实际URL的情况下实现后退和前进.本文将详细介绍BOM中的history对象 length history.length属性保存着历史记录的URL数量.初始时,该值为1.如果当前窗口先后访问了三个网址,history.length属性等于3 由于IE10+浏览器在初始时返回2,存在兼容性问题,所以该值并不常用 histor

Qt持久性对象进行序列化(同时比较了MFC与Java的方法)

Mfc和Java中自定义类的对象都可以对其进行持久性保存,Qt持久性对象进行序列化当然也是必不可少的.不过这个问题还真困扰了我很长时间……Mfc通过重写虚函数Serialize().Java则是所属的类必须实现java.io.Serializable或Externalizable接口完成.Qt是怎么搞定这个事情那,QDataStream类:让我们不禁想起Mfc中的CAchive类.Java中的java.io.ObjectOutputStream/ObjectInputStream类,分别提供了对

javascript 基础教程[温故而知新一]

子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果有很久没用了的话,就会忘记,甚至是忘的你一点都想不起来,尤其是一些基础的东西.所以我才打算写个"温故而知新"的系列博文出来,一来是这些基础的东西我比较健忘,以后方便自己翻阅:二来是希望可以帮助到一些刚入门的朋友.这个系列记录的所有知识点都是最最最(重要的事情说三遍)基础的知识.大部分都是我

[转载]浏览器的工作原理:新式网络浏览器幕后揭秘

原文地址 序言 这是一篇全面介绍 WebKit 和 Gecko 内部操作的入门文章,是以色列开发人员塔利·加希尔大量研究的成果.在过去的几年中,她查阅了所有公开发布的关于浏览器内部机制的数据(请参见资源),并花了很多时间来研读网络浏览器的源代码.她写道: 在 IE 占据 90% 市场份额的年代,我们除了把浏览器当成一个"黑箱",什么也做不了.但是现在,开放源代码的浏览器拥有了过半的市场份额,因此,是时候来揭开神秘的面纱,一探网络浏览器的内幕了.呃,里面只有数以百万行计的 C++ 代码.

Mysql binlog 解析

首先,我们知道MySQL本身就带有replication的机制,我们需要伪造一个slave,向master注册,这样的话master才会发送binlog event.注册很简单,通过调用limysql.so中的cli_advanced_command(),指定binlog filename+position,向master发送COM_BINLOG_DUMP命令.在发送dump命令的时候,我们可以指定flag为BINLOG_DUMP_NON_BLOCK,这样master在没有可以发送的binlog