接前面javascript初接触,继续学习。
表达式(Expression)与语句(Statement)
在JavaScript中,表示式是这样一种短句(phrase),它可通过被JavaScript解释器评估(evaluate)而得到一个值。
最简单的表达式是字面量(literals)和变量名。比如字面量有:
5.0 | // 数值 字面量 |
"Qt is fun!" | // 字符串 字面量 |
true | // 布尔量 字面量 |
null | // null 字面量 |
/QtScript/ | // 正则表达式 字面量 |
{ x:2, y:2 } | // object 字面量 |
[2,3,5,7,11,13,17,19] | // 数组 字面量 |
function(x) {return x*x;} | // 函数 字面量 |
这些简单的表达式可以通过各类操作符得到各类复杂的表达式。操作符:
与C++差不多 | 相对C++来说全新? | |
算数操作符 | + - * / % ++ -- | |
相等操作符 | == != | === !== |
关系操作符 | < > <= >= | in instanceof |
逻辑操作符 | || && ! | |
位操作符 | & | ^ ~ << >> | >>> |
赋值操作符 | = += -= 等 | >>>= |
其他 | ?: , . [] () new delete typeof | void |
有些表达式可能有side effects,但是一般来说,表达式不做任何工作。做事情的是语句。表达式相当于短语,而语句则相当于一个完全的句子。
- 表达式语句(带side effects的表达式,比如赋值、自增等)
- 复合语句(类似C、C++,用大括号括住)
- 控制语句 if、else、switch、while、do while、for、break、return、...
- 需要学习的是 for/in ,不过和python又类似了
- 异常处理 try、catch、finally、throw
- 空语句 (单个分号 ; )
- 其他
- var
- function
- with
Object和Array
简单的创建方式是使用 字面量(literal)
var emptyObj = {} var point = {x:0, y:0}; var circle = {x:point.x, y:point.y, radus:10}; var emptyArr = []; var a = ["Qt", 5.0, true, [["core", "v8"], "script"]];
也可使用 new 操作符
var a = new Array(); var d = new Date();
Object 的属性,可通过 . 或 [] 访问。比如 circle.x 或 circle["x"]
Array 的元素通过 [数字] 访问
函数
这个东西,真的有些不适应,相当不适应
字面量与语句
函数可以通过下面两种方式创建:
function f(x){return x;} | 通过语句 |
var f = function(x){return x;} | 通过字面量表达式 |
字面量创建匿名函数,但看可以有一个可选的名字(在函数体递归的时候有用)
var f = function fun(x){return x;}
还可以通过Function()来动态地创建函数
var f = new Function("x", "return x;");
参数
调用时的参数 可以
- 多于
- 等于
- 少于
定义时的参数
函数内可通过 arguments 获取所有参数.
通过length属性可以获得函数期待的参数个数(定义时的参数)。
属性与成员
刚说了一个 length属性,还有一个 prototype 属性(这个东西?恩,先放过)
还有两个成员函数:
- apply() 和
- call()
f.call(o, 1, 2);
类似:
o.m = f; o.m(1,2); delete o.m;
这儿的o 就是所谓的 Call Object了,在函数内,可以通过关键字 this 获取。