新的一天开始,让我们伴随者轻快的心情,开始今天的笔记
1、操作符:
(1): *、/、-在ECMAScript中操作的时候,如果遇到有一个操作值不是数值型(Number),那么就会在后台调用number()方法,将其转化成Number
(2): +和上面的三个操作符是不一样的,只要其中一个操作值不是Number,那么就会在后台调用toString()或valueOf(),得到String类型,总的来说:
就是只要一个操作值不是Number那么,就会默认调用所有操作值的toString()或valueOf()方法来进行字符串的拼接。除非由():
alert('String'+4+5);//Stirng45
alert('String'+(4+5));//String9
(3):==和===的区别:
==在ECMAScript是比较'不严谨'的:废话不都说了直接上表格,写例子
表达式 | 值 |
null==undefined | true |
NaN==NaN | false |
'5'==5 | true |
false==0 | true |
true==1 | true |
true==2 | false |
undefined==0 | false |
null==0 | false |
NaN!=NaN | true |
所以在项目中我们一律使用全等(===)和不全等(!==),在这种情况下比较的两个操作数就会进行额外的转化。
例如::'5' === 5;//false
(4):switch()语句:
在ECMAScript中switch是自我鉴定语句,和其他语言有所不同,1:可以在switch中使用任何数据类型,2:每一个case不一定是常量
var Str = 'String';
switch(true){
case: Str < 'string':
alert('xiaoyu');
break;
case: Str > 'string'
alert('dayu');
break;
default :
alert('String');
}
(5)、function()的参数:
在ECMAScript中方法的参数虽然可以在方法声明上写入几个参数,但是在调用的时候,我们可以不一定非得传入相同的参数个数的
参数,这是因为在ECMAScript中,参数其实都是在方法内部以类似数组的格式储存者,并且每个方法内部都会维护者一个arguments这么一个对
象,因为他类似与数组,所以可以用arguments[0]来代指第一个参数。虽然arguments这个对象储存在计算机中的空间和传入的参数的储存空间
不是同一个,但是他们却是联动的(但方向的联动,也就是命名参数不会改变arguments中对应的值,另外值传入一个参数,那么arguments[1]设
置的值不会反应到命名参数中),就是arguments中的值永远与对应参数的值保持同步。
function doAdd(num1,num2){
if(arguments.length === 1){
arguments[0]+=10;
alert(num1);
}else(arguments.length === 2){
arguments[1]+=10;
alert(arguments[0] + num2);
}
}
并且在ECMAScript中没有重载,如果有了两个相同名字的函数,则改名字只属于后定义的函数。