一、运算符:
比较符实例:
| // 1. 数字比数字,正常比
1 > 2; // false
// 2. 字符串比较的是ASC码的顺序
“a” > “b” // false
“10” > “8” // false “10”不是十而是一零,所以先拿“1”和“8”比,比不过则为false
// 3. 数字比字符串,字符串先转为数字在进行比较
11 > “10” // true
// 数字与非数字字符串比较时,字符串转为数字时为NaN,NaN和数字比都为false
11 > “you” // false
“you” > 11 // false |
| —- |
- “==”双等号(等值符)的比较规则是先看类型是否相同,相同在比较值;若类型不同,自动转换成同类型(隐式转换)在做比较:
- 如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
- 如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等。
“==” 里面的特例
NaN == NaN // false
- “===”三等号(等同符)的比较规则是先看类型是否相同,相同在比较值;若类型不同直接返回false。
逻辑运算符:&& || !
&& 运算符运算规则:会先看‘与’前面的值转化成Boolean值是否为真,若为真,会去看第二个值转换成布尔值的结果,若为真会看第三个值转成boolean值的结果。。。若一直为真的话,会返回最后一个值的原本值;若但凡有一个假,则直接返回该值
| 1 && “2” && 3 && 8 // 8 0 && 2 && 3 && 8 // 0 // undefined null NaN “” 0 false 转换成boolean值是全为false |
|---|
|| 或运算符运算规则:先看“或”前面你的值转化成布尔值是否为假,若为假,继续往后看若还是为假,看第三个值转化成布尔值还为假在继续往后看,若一直为假的话,会返回最后一个值的原本值;若但凡有一个值为真,则返回该值
| 1 || 2 || 3 || 4 // 1 0 || false || ‘’ || undefined || null || 3 // 3 null || false // false |
|---|
调皮的出一道题:(实际开发过程中没卵用
,提示:二进制)
1 & 2 // 0
1 & 1 // 1
1 & 3 // 1
1 | 3 // 3
! 非符号,就是把值转换成布尔值,然后取反,!!的意思就是你晓得
二、for语句
for (var i = 0; i < 10; i++) {
document.write(‘a’)
}
for循环执行顺序如下:
1. var i = 0;
2. if(i < 10){
document.write(‘a’)
}
3. i += 1
然后循环2, 3直到i<10停止;(这里提示谨慎在if语句执行函数或异步语句,执行也可,但注意i变量的变化)
for ( ; 只写中间的东西; ){};;for循环只写中间的语句时,就是while语句
这里面的老师出了几个作业,挺有意思:
1. 2的n次幂,n可输入?
2. n的阶乘,n可输入?
3. 斐波那契额的第n位是什么
三、switch
switch (“a”) {
case “a”: console.log(1);
case 2 : console.log(2);
case true:console.log(3);
}
// 打印结果:1,2,3;原因是木有加break;这点需要注意
四、类型判断
编程形式的区别:
- 面向过程:按照步骤,一步一步完成一件事
- 面向对象:将事件分成功能对象,让一个个对象去完成;
特殊:
typeOf null **// Object
typeOf [ ] ** // Object
Number(true) ** // 1
Number(false) **// 0
Number(null) **// 0
Number(undefined) **// NaN
is**NaN(‘abc’) **// true,运算步骤是:Number(‘abc’)结果在与NaN对比
var a = ‘123’;
var b = ‘123’ + 1; **
a ++;
console.log(a) ; **// 124
console.log(+a);** // 124
console.log(-a); ** // -124**
console.log(b) ; **// ‘1231’
cosnole.log(+’abc’)** // NaN**
undefined == null
若a没有定义但是执行了一下语句
typeof a; **// 不会报错,返回 ‘ undefined ‘ ;
typeof typeof undefined; **// string
五、函数
函数声明:
function test() {}
函数表达式:
// =号后面是表达式
var test = function abc () {} //命名表达式 abc没有用,相当于匿名函数,这时若访问abc会报错:ReferenceError: abc is defined
var test1 = function () {} // 匿名表达式
以上的唯一区别是:
test.name = ‘abc’;
test1.name = ‘test1’;
形参、实参
| function sum (a, b) { console.log(sum.length); // 2;形参个数 console.log(arguments.length); // 3; 实参个数 } sum (11, 22, 33) |
|---|
| function add (a, b, c) { a = 2 console.log(arguments[0]); // 2 arguments[1] = 0; console.log(b); // 0 c = 3; console.log(arguments[2]); // undefined } add (1, 2) |
|---|
如有不对,欢迎指正
