1. +
If String + Number / Number + String
The result (data type): String
eg: "5"+6 //"56"
6+"5" //"65"
2. -
If String - Number / Number - String
The result (data type): Number
eg: "12"-2 //10
12-"2" //10
2.1 sort()
参数是按照string来进行排序的
如果是number类型 则会出现这种情况:
var a=[11,10,100,60];
console.log(a.sort());//10,100,11,60
避免这种情况使用:
var a=[11,10,100,60];
console.log(a.sort(function(x,y){
return x-y;
})); //[10, 11, 60, 100]
3. 条件操作符
var max=(a>b)? a:b;
//annotation
if(a>b){
max=a;
}else{
max=b;
}
4. Function
Create a function
4.1 函数声明 declaration
function a(){}
4.2 字面量/匿名函数/函数表达式 expression
var a =function(){}
4.3 构造函数
function A(){}
4.1 VS 4.2 函数声明 VS 函数表达式 VS 变量提升
函数声明会优先读取
Javascript 优先读取和解析函数声明declaration
而 表达式expression像变量 会到此步骤再解析
变量提升: 变量会提升到最前面 先被捕捉到
<script type="text/javascript">
var a="hello";
function f(){
console.log(a);
var a="world";
}
f();//undefined 因为在function f中变量a 变量提升
所以就不去理会在全局中的var a="hello";
但是在function中的变量a又是在console.log(a);之后 所以为undefined
</script>
Summary:
变量提升是为了对当前作用域 check是否有variable,
if 检测到了, 则执行在此scope的variable,
if 没有检测到,则沿着scope chain, 往上找, 直到全局。
但是variable又是到了此步骤才执行,所以是Undefined.