js 运算符 流程控制 函数 作用域

自定义对象{}

1 var a = {"name": "Alex", "age": 18};
2 var d = {'name':'chao',age:18}; 键可以不加引号
3 console.log(a.name);
4 console.log(a["age"]);
5 for循环遍历自定义对象
6 var a = {"name": "Alex", "age": 18};
7 for (var i in a){
8   console.log(i, a[i]);
9 }

算数运算符 1 + - * / % ++ -- i++,是i自加1,i--是i自减1 i++的这个加1操作优先级低,先执行逻辑,然后再自加1,而++i,这个加1操作优先级高,先自加1,然后再执行代码后面的逻辑 

比较运算符

 1 > >= < <= != == === !== ==是弱等于(不比较数据类型) ===强等于 强等于会比较数据类型 

逻辑运算符

 1 && || ! #and,or,非(取反)!null返回true 

赋值运算符

 1 = += -= *= /= #n += 1其实就是n = n + 1 

流程控制

if -else if -else

1 var a = 10;
2 if (a > 5){   
3   console.log("a > 5");
4 }else if (a < 5) {
5   console.log("a < 5");
6 }else {
7   console.log("a = 5");
8 }

switch 切换

 1 var a = 10;
 2 undefined
 3 switch (a){    //switch (a++){}
 4     case 9:
 5         console.log('999');
 6     break;
 7     case 10:
 8         console.log('101010');
 9     break;
10     case 11:
11         console.log('111111');
12     break;
13 }
14 
15 加上default示例:
16 
17     var a = 20;
18 
19     switch (a){
20         case 9:
21             console.log('999');
22         break;     //必须加break  否则会执行case中的语句
23         case 10:
24             console.log('101010');
25         break;
26         case 11:
27             console.log('111111');
28         break;
29         default :  //上面的条件都不成立的时候,走default
30             console.log('啥也不对!!')
31 
32     }

for循环

 1 for (var i=0;i<10;i++) {  
 2   console.log(i);
 3 }
 4 
 5 循环数组:
 6 var l2 = ['aa','bb','dd','cc']
 7 方式1
 8 for (var i in l2){
 9    console.log(i,l2[i]);
10 }
11 方式2
12 for (var i=0;i<l2.length;i++){
13   console.log(i,l2[i])
14 }
15 
16 循环自定义对象:
17 var d = {aa:'xxx',bb:'ss',name:'小明'};
18 for (var i in d){
19     console.log(i,d[i],d.i)  #注意循环自定义对象的时候,打印键对应的值,只能是对象[键]来取值,不能使用对象.键来取值。
20 }

while循环

1 var i = 0;
2 while (i < 10) {
3   console.log(i);
4   i++;
5 }

三元运算符

1 var a = 1;
2 var b = 2;
3 var c = a > b ? a : b //如果a>b这个条件成立,就把冒号前面的值给c,否则把冒号后面的值给c   //python中的:a = x if x>y else y

函数

 1 // 普通函数定义
 2 function f1() {
 3   console.log("Hello world!");
 4 }
 5 
 6 // 带参数的函数
 7 function f2(a, b) {
 8   console.log(arguments);  // 内置的arguments对象
 9   console.log(arguments.length);
10   console.log(a, b);
11 }
12 
13 // 带返回值的函数
14 function sum(a, b){
15   return a + b;  //在js中,如果你想返回多个值是不行的,比如return a ,b;只能给你返回最后一个值,如果就想返回多个值,你可以用数组包裹起来 return [a,b];
16 }
17 sum(1, 2);  // 调用函数  sum(1,2,3,4,5)参数给多了,也不会报错,还是执行前两个参数的和,sum(1),少参数或者没参数也不报错,不过返回值就会是NAN
18 
19 // 匿名函数方式,多和其他函数配合使用,后面我们就会用到了
20 var sum = function(a, b){  //在es6中,使用var,可能会飘黄,是因为在es6中,建议你使用let来定义变量,不过不影响你使用
21   return a + b;  
22 }
23 sum(1, 2);
24 
25 // 立即执行函数,页面加载到这里,这个函数就直接执行了,不需要被调用执行
26 (function(a, b){
27   return a + b;
28 })(1, 2);  //python中写可以这么写:ret=(lambda x,y:x+y)(10,20) 然后print(ret)

函数的全局变量和局部变量

 1 局部变量:
 2 
 3       在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。
 4 
 5     全局变量:
 6 
 7       在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
 8 
 9     变量生存周期:
10 
11       JavaScript变量的生命期从它们被声明的时间开始。
12 
13       局部变量会在函数运行以后被删除。
14 
15       全局变量会在页面关闭后被删除。

作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

闭包

1 var city = "BeiJing";
2 function f(){
3     var city = "ShangHai";
4     function inner(){
5         console.log(city);
6     }
7     return inner;
8 }
9 var ret = f();

猜你喜欢

转载自www.cnblogs.com/ch2020/p/12969648.html