• 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 += '
    ';
     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 + '	';
    100         }
    101         str += '
    ';
    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 + '	';
    114             j++;
    115         }
    116         str += '
    ';
    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]
  • 相关阅读:
    新的工作电脑 神州优雅A550i7
    职责链模式(Chain of Responsibility)
    访问者模式(Visitor)
    单例模式(Singleton)
    解释器模式(Interpreter)
    迭代器模式(Iterator)
    解决 Visual Stuido 工具栏中的工具重置后,恢复回来。
    WCF 一步一步 发布 WCF服务 到 Windows 服务 (图)
    桥接模式(Bridge)与合成/聚合复用原则(CARP)
    dbentry访问带密码的Access
  • 原文地址:https://www.cnblogs.com/wangyi0419/p/13091898.html
Copyright © 2020-2023  润新知