js基础语法学习笔记

1、数据类型

 1 //isNaN()判断是否是非数字
 2         console.log(isNaN("nihaoa")); //true
 3         var age = 18;
 4         console.log(isNaN(age)); //false
 5         var num1 = 0o12; //八进制
 6         var num2 = 0x12; //十六进制
 7         console.log(num1);//10
 8         console.log(num2);//18
 9         console.log('她是'+age+'岁'); // 字符串与变量来拼接
10 //简单交互
11         /*
12         var age1 = prompt('请输入您的年龄'); //prompt取的值是字符串类型的
13         var str = '您今年已经' + age1 + '岁了呀';
14         alert(str);
15 
16          */
17 //布尔类型
18         var flag = true;
19         var flag1 = false;
20         //运算的时候true当1,false当0
21         console.log(flag + 1);//2
22         console.log(flag1 + 1);//1
23 //声明一个变量未给值,,则为undefined类型
24         var a1;
25         console.log(a1);//undefined
26         console.log(a1 + 1); //NaN
27         console.log(a1 + 'hello'); //undefinedhello
28 
29 //null类型
30         var space = null;
31         console.log(space + 1); //1
32         console.log(space + 'hello'); //nullhello
33 //获取变量数据类型
34         var num3 = 10;
35         console.log(typeof age); //number
36         var flag2 = true;
37         console.log(typeof flag2); //boolean
38 
39 //数字转换为字符串三种方式:
40         // num.toString()  和 String(num) 和 字符串拼接
41         var num4 = 10;
42         var str4 = num4.toString();
43         console.log(typeof str4); //string
44         var num5 = 20;
45         var str5 = String(num5);
46         console.log(str5);
47         var num6 = 30;
48         str6 = num6 + '';
49         console.log(str6);
50 
51 //字符串转数字
52         //parseInt()转整数
53         console.log(parseInt('3.14')); //3
54         console.log(parseInt('3.84')); //3
55         console.log(parseInt('60px')); //60 去单位
56         //parseFloat()转小数
57         console.log(parseFloat('3.14'));//3.14
58         //Number
59         console.log(Number('3.14'));//3.14
60         //js隐式转换(- * /)
61         console.log('666' - 0);//666
62         console.log('666' - '665');//1
63         console.log(666 - '-6');//672
64 
65 //转换为布尔型
66         //Boolean() '',null,NaN,0,undefined 这5个都是false
67         console.log(Boolean(NaN));//false
68 
69         //作业
70         var b1 = 1;
71         var b2 = 2;
72         var b3 = b1;
73         b1 = b2;
74         b2 = b3;
75         console.log('b1=' + b1);
76         console.log('b2=' + b2);

2、运算符和控制

  1 //运算符
  2     //不要直接对浮点数进行运算,存在精度问题
  3     var a1 = 0.3;
  4     var a2 = 0.1 + 0.2;
  5     console.log(a1 === a2);
  6     //自增运算符:
  7     var a = 1;
  8     var b = 1;
  9     console.log(++a); //2
 10     console.log(++a === a); //true
 11     console.log(b++); //1
 12     console.log(b++ + 1); //3
 13     var c = 10;
 14     console.log(c++ + ++c); //10+12=22
 15     /*前置自增和后置自增的区别:
 16     1、单独写时无区别:如 a++; 和 ++a; 两者效果一样,都是将a+1
 17     2、其他情况下a++是先将a的值返回给表达式“a++”,再将a+1,而
 18         ++a正好相反。
 19     */
 20 //比较运算符
 21     // == 判等号,会将字符串转为数字进行比较
 22     var d = 3;
 23     console.log(d == 3); //true
 24     console.log(d != 3); //false
 25     console.log(d == '3'); //true
 26     console.log(d != '3'); //false
 27     /// === 全等 ,要求数值云数据类型均一致
 28     console.log(d === '3'); //false
 29     // 逻辑运算符
 30     console.log(1>0 && 3>2); //true
 31     console.log(1>0 || 3<2); //true
 32     console.log(!(2>2)); // true
 33     console.log(!2); //false
 34 
 35     //逻辑与短路:表达式1为真,则返回第表达式2的布尔值;1为假,则直接返回1
 36     console.log(1 && 3>7); //false
 37     console.log(null && 3>7); //null
 38     //逻辑或短路:表达式1为真,则返回第表达式1的布尔值;1为假,则直接返回2
 39     console.log(3 || 2); //3
 40     console.log(0 || null); //null
 41     //例子
 42     var num = 0;
 43     console.log(123 || num++);
 44     console.log(num);//0
 45 //运算符优先级:
 46     // 小括号>一元运算符>算术运算符>比较运算符>相等运算符>逻辑运算符>赋值
 47 
 48     //注:一元二元三元运算符组成的表达式都是有返回值的,可用变量来接收
 49     // var a = num++;  var a = 1+2; var a = 3 > 2 ? 1:2
 50 
 51     //switch分支
 52     var aa = 1;
 53     switch (aa) {
 54         case 1: // 当 aa===1 时执行
 55             console.log('这是1');
 56             break;//没有break则会直接执行下面case 2 里面的语句,不做判断了,知道遇到break或结束;
 57         case 2:
 58             console.log('这是2');
 59             break;
 60         default:
 61             console.log('没有匹配')
 62     }
 63 //for循环
 64 
 65     for (var i1 = 1; i1 <= 10; i1++) {
 66         console.log('我爱你中国')
 67     }
 68 
 69 
 70  /* 输出倒三角
 71         **********
 72         *********
 73         ********
 74         *******
 75         ******
 76         *****
 77         ****
 78         ***
 79         **
 80         *
 81 
 82     var str = '';
 83     for (var i = 1; i <= 10; i++) {
 84         for (var j = i; j <=10; j++) {
 85             str += '*';
 86         }
 87         str += '\n';
 88     }
 89     console.log(str);
 90 
 91      */
 92 
 93     //输出九九乘法表
 94 /*
 95     //用for循环输出九九乘法表
 96     var str = '';
 97     for (var i = 1; i <= 9; i++) {
 98         for (var j = 1; j <= i; j++) {
 99             str += j + 'x' + i + '=' + j*i + '\t';
100         }
101         str += '\n';
102     }
103     console.log(str);
104 
105  */
106 
107     // 用while循环输出九九乘法表
108     var i = 1;
109     var str = '';
110     while(i<=9){
111         var j = 1;
112         while(j<=i){
113             str += j + 'x' + i + '=' + j * i + '\t';
114             j++;
115         }
116         str += '\n';
117         i++;
118     }
119     console.log(str);
120 
121 // do while循环 先执行一次循环体,再判断条件
122     k = 1;
123     do {
124         console.log('我爱你'+k);
125         k++;
126     } while (k <= 10);
127 
128     //continue关键字:结束本次循环!for循环中则直接跳到i++上
129     //例子:计算当1-100之间除了能被7整除的整数的和超过3000的最大整数。
130     var sum1 = 0;
131     for (var m = 1; m <= 100; m++) {
132         if (m % 7 === 0) {
133             continue;
134         }
135         sum1 += m;
136         if (sum1 >= 3000) {
137             break;
138         }
139     }
140     console.log(m);

3、数组

 

 2     var arr0 = [];//创建数组
 3     var arr1 = [1, '你好', true, null, [123]];
 4     console.log(arr1);
 5     console.log(arr1[2]); //true  索引访问数组
 6     for (var i = 0; i < arr1.length; i++) {
 7         console.log(arr1[i]);
 8     }
 9 
10     //案例:求数组中的最大值
11     var arr2 = [2, 4, 7, 5, 6];
12     var max = 0;
13     for (var i = 0; i < arr2.length; i++) {
14         if (arr2[i] > max) {
15             max = arr2[i];
16         }
17     }
18     console.log('最大值是:'+max);
19 
20     //数组操作
21     var arr3 = [1, 2, '3'];
22     arr3[6] = 6;
23     console.log(arr3); // [1, 2, "3", empty × 3, 6] 注意中间有三个undefined
24     arr3[0] = 11;
25     console.log(arr3); //通过索引替换数组元素
26     //案例:将数组arr4中的偶数放入到新数组
27     var arr4 = [1, 2, 3, 5, 7, 8, 22, 45, 67, 88, 90];
28     var newArr = [];
29     for (var i = 0; i < arr4.length; i++) {
30         if (arr4[i] % 2 === 0) {
31             newArr[newArr.length] = arr4[i];
32         }
33     }
34     console.log(newArr);
35     //案例:将数组元素反转
36     var arr5 = [1, 2, 3, 4, 5];
37     var narr5 = [];
38     for (var i = arr5.length-1; i >= 0 ; i--) {
39         narr5[narr5.length] = arr5[i];
40     }
41     console.log(narr5);
42 
43     //案例:冒泡排序,
44     //很简单,10个数,比较9轮,第一轮比较9次,第一轮结束后最大的数排到了最后,
45     // 第二轮比较8次...第9轮比较一次即可。
46     //写个嵌套循环,第一个for控制轮数,第二个for控制每轮的次数
47     var temp = '';
48     var arr = [2, 3, 8, 5, 4, 7, 9, 1, 6, 7 ];
49     for (var i = 1; i < arr.length; i++) {
50         for (var j = 0; j < arr.length - i; j++) {
51             if(arr[j]>=arr[j+1]){
52                 temp = arr[j];
53                 arr[j] = arr[j + 1];
54                 arr[j + 1] = temp;
55             }
56         }
57     }
58     console.log(arr

4、函数

  1 //函数
  2     console.log(1 + undefined); //NaN
  3     console.log('1' + undefined);//1undefined
  4     function f(a,b) {
  5         console.log(a + b);
  6     }
  7     //实数参个与形参个数不相等却不会报错,要是python早就报错了。
  8     f(1,2); //3
  9     f(1,2,3);//3
 10     f(1);//NaN
 11     f('aaa');//aaaundefined
 12     console.log(f(1,2)); //函数没有返回值,则直接输出函数的结果为undefined,就像python中的None
 13 
 14 //arguments :函数独有的内置对象,类似于python中的args,**kwargs来接收实参
 15     //当无法确定实参的个数时,可以用arguments来保存实参,它的值是一个伪数组,有长度和索引,
 16     //但是没有pop(),push()等方法。
 17     function f1() {
 18         console.log(arguments);
 19         console.log(arguments.length); //5
 20         console.log(arguments[1]);  //2
 21     }
 22     f1(1,2,3,4,5)//Arguments(5) [1, 2, 3, 4, 5, callee: ƒ, Symbol(Symbol.iterator): ƒ]
 23 
 24     //案例:求实参的最大值
 25     function f2() {
 26         var max = arguments[0];
 27         for (var i = 1; i < arguments.length; i++) {
 28             if (arguments[i] > max) {
 29                 max = arguments[i];
 30             }
 31         }
 32         return max;
 33     }
 34     console.log(f2(2,4,3,7,1)) //7
 35 
 36     //函数冒泡排序
 37     function f3(arr) {
 38         for (var i = 1; i < arr.length; i++) {
 39             for (var j = 0; j < arr.length - i; j++) {
 40                 if(arr[j]>=arr[j+1]){
 41                     temp = arr[j];
 42                     arr[j] = arr[j + 1];
 43                     arr[j + 1] = temp;
 44                 }
 45             }
 46         }
 47         return arr
 48     }
 49     console.log(f3([15,4,2,8,7,5,1])); //(7) [1, 2, 4, 5, 7, 8, 15]
 50 // 函数的两种声明方式
 51     //1、利用函数关键字自定义函数
 52     function fn1() {
 53     }  // 无分号结尾
 54     fn1();
 55     //2、函数表达式(匿名函数)
 56     var fn2 = function () {
 57     };
 58     fn2();
 59     //注意:fn2是变量名,不是函数名;可传参。
 60 
 61 // 作用域
 62     //全局作用域:script标签下面的,或者js文件下面的;
 63     //局部作用域:在函数内部定义的。
 64     //全局变量:在全局作用域下的变量
 65     //局部变量:在函数内部声明的变量
 66     //注意:
 67         //1、在函数内部没有var声明直接赋值的变量也是全局变量
 68         //2、当变量名重复时,选择就近原则访问
 69     var num0 = 0;
 70     var num1 = 10;
 71     function f4() {
 72         var num2 = 20;
 73         num3 = 30;
 74         num0 = 0.1; // 给局部变量赋值
 75         console.log(num0); //0.1  局部变量
 76         console.log(num1); //undefined   局部变量,下方声明并赋值,这里显示未赋值
 77         console.log(num2); //20 局部变量
 78         console.log(num3); //30 全局变量 因为num3未声明
 79         var num0; //声明了num0,所以是局部变量
 80         var num1 = 11; //声明并赋值
 81         console.log(num1); //11 局部变量
 82         var num4 = 40;
 83         console.log(num4); //40
 84         num4 = 44; // 前面已经声明,所以是局部变量
 85         console.log(num4); //44
 86     }
 87     f4();
 88     console.log(num0);//0
 89     console.log(num1);//10
 90     //console.log(num2); //error
 91     console.log(num3); //30
 92     //console.log(num4); //error
 93 
 94 // js引擎运行js分为两步:预解析+代码执行
 95     //1、预解析:js引擎会把js里面的所有的var(变量解析)和function(函数解析)提升到当前作用域的最前面;
 96     //2、代码执行:顺序执行
 97     f5();
 98     function f5() {
 99     }
100     f5();
101 
102     f6();//报错
103     var f6 = function () {
104     };
105     f6();
106 
107 //案例
108     function f7() {
109         var a=b=c=1;//相当于var a=9; b=9; c=9;
110         console.log(a);//1
111         console.log(b);//1
112         console.log(c);//1
113     }
114     f7();
115     console.log(c);//1
116     console.log(b);//1
117     console.log(a);//error
118     //注意:var a=9, b=0, c=9;与var a=b=c=9;的区别

5、对象

  1 //创建对象三种方式
  2     //1、利用对象字面量创建对象{}
  3     //类似于python中的字典,里面是键值对的形式存储的
  4     //变量和函数到了对象里面就成了属性和方法
  5     var obj = {
  6         name: 'wangyi',
  7         age:18,
  8         gender:'男',
  9         eat:function () {
 10             console.log('正在吃饭!')
 11         }
 12     };
 13     //调用:
 14     console.log(obj.name);
 15     console.log(obj['age']);
 16     obj.eat();
 17 
 18     //利用new object创建对象
 19     var obj1 = new Object(); //es5中, 创建空对象
 20     obj1.name = 'wenwen';
 21     obj1.eat = function () {
 22         console.log('雯雯正在吃饭!')
 23     };
 24     console.log(obj.name);
 25 
 26     //利用构造函数创建对象,将相同的属性和方法封装到函数里。类似于python中的类里面的构造方法__init__()
 27     function Star(name,age,gender) {
 28         this.name = name;
 29         this.age = age;
 30         this.gender = gender;
 31         this.eat = function (foot) {
 32             console.log('刘亦菲在吃'+foot)
 33         }
 34     }
 35     var lyf = new Star('刘亦菲','23','女'); //new一个对象
 36     console.log(lyf.name);
 37     lyf.eat('蛋炒饭');
 38     //注意:构造函数名首字母大写;不要return;new不可少。
 39 
 40     //遍历对象
 41     for (var k in lyf) {
 42         console.log(k);
 43         console.log(typeof k); //string
 44         console.log(lyf[k]);
 45     }
 46 
 47 //内置对象
 48     //不是构造函数,不需要new来创建实例对象,直接用里面的属性和方法
 49 //Math数学对象
 50     console.log(Math.PI); //3.1415926...
 51     console.log(Math.max(1,2,3,5,-1));//5
 52     console.log(Math.max(1,2,'haha'));//NaN
 53     console.log(Math.max());//-Infinity
 54 
 55     console.log(Math.abs(-1));//1 绝对值
 56     console.log(Math.abs('666'));//666
 57     console.log(Math.abs('haha'));//NaN
 58     console.log(Math.floor(3.94));//3 向下取整
 59     console.log(Math.ceil(3.14));//4  向上取整
 60     console.log(Math.round(3.14));//3 四舍五入
 61     console.log(Math.round(-1.3));//-1
 62     console.log(Math.round(-1.5));//-1 特殊
 63     console.log(Math.round(-1.6));//-2
 64     //random()随机数方法
 65     console.log(Math.random());
 66     //获得两个数之间的随机整数,包括着两个数
 67     function getRandomInt(min, max) {
 68         return Math.floor(Math.random() * (max - min + 1)) + min;
 69     }
 70     console.log(getRandomInt(0,9));
 71 
 72     //案例:猜字游戏
 73 /*
 74     num = getRandomInt(1,10);
 75     while (true ) {
 76         num1 = prompt("请猜1-10之间的一个数");
 77         if (num1 == num) {
 78             alert("恭喜你猜对了");
 79             break;
 80         }else if (num1 > num) {
 81             alert("猜大了");
 82         }else if (num1 < num) {
 83             alert("猜小了");
 84         }
 85     }
 86  */
 87 
 88 /*
 89     var i = 1;
 90     var num2 = 3; //猜的次数
 91     do {
 92         num1 = prompt("请猜1-10之间的一个数");
 93         i++;
 94         if (num1 == num) {
 95             alert("恭喜你猜对了");
 96             break;
 97         }else if (num1 > num) {
 98             alert("猜大了");
 99             if (i > num2) {
100                  alert("三次都没猜出,游戏结束");
101             }
102         }else if (num1 < num) {
103             alert("猜小了");
104             if (i > num2) {
105                 alert("三次都没猜出,游戏结束");
106             }
107         }
108     }while (i <= num2);
109 */
110 
111 /*
112     num = getRandomInt(1,10);
113     for (var i = 0; i < 3; i++) {
114         num1 = prompt("请猜1-10之间的一个数");
115         if (num1 == num) {
116             alert("恭喜你猜对了");
117             break;
118         }else if (num1 > num) {
119             alert("猜大了");
120             if (i==2) {
121                 alert("三次机会用完,游戏结束")
122             }
123         }else if (num1 < num) {
124             alert("猜小了");
125             if (i==2) {
126                 alert("三次机会用完,游戏结束")
127             }
128         }
129     }
130 */
131 
132 // Date 日期时间对象 是一个构造函数,必须使用new来创建日起对象
133     var date = new Date();
134     console.log(date);//当前系统时间
135     var date1 = new Date('2020-06-10 07:26:03');
136     console.log(date1); //Wed Jun 10 2020 07:26:03 GMT+0800 (中国标准时间)
137     console.log(date.getFullYear()); //获得年份
138     //输出日期 国人习惯
139     var year = date.getFullYear();//
140     var month = date.getMonth()+1;//月 0-11
141     var day = date.getDate();//
142     var week = date.getDay();//星期  0-6
143     var arr_week =['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
144     var hour = date.getHours();
145     hour = hour<10?'0'+hour:hour;
146     var minute = date.getMinutes();
147     minute = minute<10?'0'+minute:minute;
148     var second = date.getSeconds();
149     second = second<10?'0'+second:second;
150     //今天是2020年6月10日 星期三 08:41:10
151     console.log('今天是'+year+'年'+month+'月'+day+'日 '+arr_week[week]+' '+hour+':'+minute+':'+second);
152     //获取1970年至今的总毫秒数
153     console.log(date.valueOf());//1591749670361
154     console.log(date.getTime());
155     console.log(+new Date());
156     console.log(Date.now()); //H5新增
157 
158     //案例:倒计时
159     function countDown(time) {
160         var nowtTime = +new Date(); // 现在时间
161         var inputTime = +new Date(time); //输入的时间
162         var times = (inputTime - nowtTime) / 1000; //时间差 秒
163         var d = parseInt(times / 60 / 60 / 24);//天数
164         d = d < 10 ? '0' + d : d;
165         var h = parseInt(times / 60 / 60 % 24);//小时数 24以内
166         h = h < 10 ? '0' + h : h;
167         var m = parseInt(times / 60 % 60);//分 60以内
168         m = m < 10 ? '0' + m : m;
169         var s = parseInt(times % 60);
170         s = s < 10 ? '0' + s : s;
171         return '剩余时间:'+d+'天'+h+'时'+m+'分'+s+'秒'
172     }
173     console.log(countDown('2020-6-11 00:00:00'));
174 
175 
176 //数组内置对象
177     var arr = [1,2,3];
178     var arr1 = new Array();//创建一个空数组
179     var arr2 = new Array(3);//长度为3的空数组 写一个数表示长度
180     var arr3 = new Array(1,2);// 写2个数以上表示初始化数组 [1,2]
181     //检测是否为数组
182     //1、instanceof
183     var arr = [];
184     var obj = {};
185     console.log(arr instanceof Array);// true
186     console.log(obj instanceof Object);// true
187     //2、Array.isArray()   H5新增
188     console.log(Array.isArray(arr)); //true
189 
190     //数组的增删
191     //push()末尾追加
192     var arr = [1, 2, 3];
193     arr.push(4, 5, 6); //返回值是数组的长度
194     console.log(arr.push(4, 5, 6)); //9
195     console.log(arr);
196     //unshift()前面添加数组元素,也会返回数组长度
197     arr.unshift('wy','wenwen');
198     console.log(arr);
199     //pop()删除最后一个元素,并返回元素
200     arr.pop();
201     console.log(arr);//(10) ["wy", "wenwen", 1, 2, 3, 4, 5, 6, 4, 5]
202     console.log(arr.pop());//5
203     //shift(),删除第一一个元素,其他跟pop一样
204     arr.shift();
205 
206     //数组翻转 reverse()
207     var arr = [4,2,6,5,8];//[8, 5, 6, 2, 4]
208     arr.reverse();
209     console.log(arr);
210     //sort排序
211     arr.sort();
212     console.log(arr);//[2, 4, 5, 6, 8]
213 
214     //多位数的排序有问题
215     var arr = [3,11,2,55,4];
216     arr.sort();
217     console.log(arr);//[11, 2, 3, 4, 55]
218     //解决:
219     arr.sort(function (a,b) {
220         return a-b;//升序, b-a为降序
221 
222     });
223     console.log(arr);//[2, 3, 4, 11, 55]
224 
225     //数组索引号
226     // indexOf() 从前往后查找,返回给定元素的索引号,多个取第一个,无则返回-1
227     var arr = [1, 2, 3, 2, 4, 5,'wy'];
228     console.log(arr.indexOf(2)); //1
229     console.log(arr.indexOf('wy')); //6
230     console.log(arr.indexOf('wyy')); //-1
231     console.log(arr.lastIndexOf(2)); //3 从后往前找
232     //案例:数组去重
233     //方法一:拿着旧数组元素取新数组找索引,没有则新增
234     var  arr = [1,2,3,2,5,4,1,5,8,9];
235     function arrQc(arr) {
236         newArray = [];
237         for (var i = 0; i < arr.length; i++) {
238             if(newArray.indexOf(arr[i]) === -1){
239                 newArray.push(arr[i]);
240             }
241         }return newArray;
242     }
243     console.log(arrQc(arr));//[1, 2, 3, 5, 4, 8, 9]
244     //方法二:如果元素的前后索引值不相等,就删了它
245     var arr = [1,2,2,3,1,4,5,1,3];
246     for (var i = 0; i < arr.length; i++) {
247         if(arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i])){
248             arr.splice(i,1) //从指定位置删除指定个数的元素
249         }
250     }
251     console.log(arr);//[2, 3, 4, 5, 1]
252 
253 
254     //数组转为字符串
255     var arr = [1, 2, 3, 'hello'];
256     console.log(arr.toString());//1,2,3,hello
257     console.log(arr);//原数组不变
258     console.log(arr.join('-'));//1-2-3-hello
259 
260     //数组删除元素,返回删除元素组成的数组,会改变原数组
261     arr.splice(0,1);
262     console.log(arr);//[2, 3, "hello"]
263     console.log(arr.splice(0,2));//[2,3]
264     //数组截取slice(start,end) 不包括end,返回截取部分组成的元组,不会影响原数组
265     var arr = [1,2,3,4,5,6];
266     console.log(arr.slice(2,4));
267     console.log(arr);
268 
269 
270 //字符串对象
271     var str = 'zhangwenwen';
272     console.log(str.length);//11
273     //为什么字符串作为一简单的数据类型会有属性length?因为js对其进行了基本包装,把基本数据类型包装成
274     //复杂数据类型。
275     var temp = new String('zhangwenwen');//创建临时变量,用完就删
276     var str = temp; //现在str就是实例对象了
277 
278     //字符串的值不可变
279     //通过在内存中开辟新空间来存储新的字符串
280 
281     //字符串索引
282     console.log(str.indexOf('w'));//5 从前往后找,第一个
283     console.log(str.lastIndexOf('w'));//8 从后往前找,第一个
284     console.log(str.indexOf('w',6));//8 ,从索引号6开始从前往后找
285 
286     //案例:查找字符串“danjgajbgjsjgakalglaj”中j出现的位置和次数
287     var str = 'danjgajbgjsjgakalglaj';
288     for (var i = 0; i < str.length; i++) {
289         if(str[i] === 'j'){
290             console.log(i)
291         }
292     }
293     //字符串操作方法
294     var str = 'abcdefg';
295     //slice(start,end)截取
296     console.log(str.slice(2,4)); //cd
297     //concat()连接
298     console.log(str.concat('你好'));//abcdefg你好
299     //replace替换 有多个则只能替换一个
300     console.log(str.replace('c','三'));//ab三defg
301     //split()转换为数组
302     console.log(str.split('d'));//["abc", "efg"]
303 
304     //toUpperCase()转大写 toLowerCase()小写
305     console.log(str.toUpperCase());//ABCDEFG
306 
307 
308     //js中简单数据类型:string,number,boolean,undefined,null
309     //复杂数据类型:Obj,Array,Date等
310     //简单数据类型传参,因为数据不可变,所以是值传递
311     function f(a) {
312         a++;
313         console.log(a);//11
314     }
315     var x =10;
316     f(x);
317     console.log(x);//10
318     //复杂数据类型传参,因为数据可变,所以穿的是引用,类似于python中的传参
319     function f1(arr1) {
320         arr1.push(4);
321         console.log(arr1)//[1, 2, 3, 4]
322     }
323     var arr = [1,2,3];
324     f1(arr);
325     console.log(arr);//[1, 2, 3, 4]

 

posted @ 2020-06-11 11:00  天青色wy  阅读(207)  评论(0编辑  收藏  举报