js基础杂记

Posted sunvenet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基础杂记相关的知识,希望对你有一定的参考价值。

  1. document.write();  //表示在当前页面上输出内容

  2. 如果<script>标签引入了外部文件,那么在这个script标签内就不能在执行其他script代码了。例如<script type="text/javascript" src="xxx.js"></script>的中间再写执行不到哦

  3. 如果要输出文本类型的</script>可以用&lt代替左尖括号(<),用&gt代替右尖括号(>)

  4. 用户定义的所有名字叫做标识符(或者变量名),标识符必须由数字、字母、下划线或者$符号组成(注意:不能以数字开头!)

  5. 标识符区分大小写,例如:age和AGE是两个不同的变量

  6. js是弱类型语言,变量起初被赋值成什么类型就是什么类型,不建议中途改变这个变量的类型

  7. 任何类型的数据和字符串类型数据做相加操作的时候,其他数据类型会自动转换成字符串类型进行字符串的拼接,此时相加操作不再是数学意义上的加法,而是表示拼接的意思

  8. 任何数据除了和字符串做相加运算外,与NaN做任何运算(减,乘,除)的结果始终为NaN。(NaN本身与NaN相加也为NaN),字符串如果是纯数字则转换成数字,否则转换成NaN,例如1-"-2"那么就为3,例如1-“-2a”就为NaN(NaN的意思是Not A Number非数字)

  9. 关系运算符,在等和不等的比较上,①如果一个操作数为布尔值,则将其转换为数值,false转换成0,true转换成1。②一个操作数为字符串,则比较之前将其转成数值再进行比较,例如alert(20 == "20");将返回true。③一个操作数为NaN,则==返回false,!=返回true,并且NaN和NaN也不相等哦。(NaN==NaN返回false)。

  10. 逻辑运算符 ①与:表达式1 && 表达式2 (短路操作:当表达式1为false,那么直接输出false,表达式2将不再判断执行)②或:表达式1 || 表达式2(短路操作:当表达式1为true时,表达式2将不会再判断执行)③非:! 也就是将操作数转换程布尔值后再取反的操作,如果操作数是一个空字符串,返回true(即 alert(!"") ),如果操作数是非空字符串,则返回false,如果操作数是0,则返回true(即 alert(!0)),如果操作数是任何非0的数字(包括Infinity),那么都返回false,如果操作数是NaN,那么非运算返回true,如果操作数是undefined,那么非运算符返回true。

  11. 进制转换:①十进制转换成二进制:除2取余,倒序排列。②二进制转8进制:从右向左,每三位一组,不足三位使用0补齐,再将每组数转换成10进制。③二进制转十六进制:从右向左,每四位一组,不足四位使用0补齐,再将每组数转换成10进制。

  12. 在书写分支语句的时候,一般把出现概率较大的情况要写在前面(为了降低资源消耗,让大概率的情况先执行到)。

  13. arguments:在每一个函数内,都有一个内置的数组,是一个变量,叫做arguments,arguments可以存储当前函数传入的所有参数,而且,是通过传参的顺序进行排列的。要访问arguments里面的数据,需要通过对应的下标进行访问(例如arguments[0])。

  14. arguments.length 输入传入参数的个数。

  15. 作用域就是起作用的范围,或者说是有效范围,每一个函数的声明都会形成一个作用域。全局作用域声明的变量叫全局变量,局部作用域声明的变量叫局部变量,局部变量的生命周期和生效范围,仅限于声明该变量的函数区域。当函数调用完以后就直接销毁。如果全局作用域和局部作用域变量重名,我们就采取就近原则,当前访问这个变量离哪个作用域近,就是哪个作用域范围。

  16. 函数的递归调用。方法:①首先找临界值,既无需计算就可以获得的值。②找出这一次和上一次的关系。③假设当前函数已经可以使用了,调用自身计算上一次的运行结果,再写出这次的运行结果。特点:①必须有参数。②必须有return。
    例如:计算1~100的和,分析入下:1为无需计算就可以获得的值。第100次和第99次的关系是,99次的和再加上100。代码如下:
    			function sum(n){
    				if(n == 1){
    					return 1;
    				}
    				return sum(n-1) + n;
    			}
    			alert (sum(100));
  17. 我们可以通过document.getElementById找到符合条件的标签节点,然后可以用时间驱动函数,给当前的按钮绑定一些列操作,完成交互。

  18. arr.length代表数组的长度(数组元素个数),其中length属性不止是只读,还能进行设置,比如:
    var arr = ["red","blue","black"];
    alert(arr.length);  //输出3
    arr.length = 2;
    alert(arr.length);  //输出2

  19. 数组元素的访问和赋值,是通过下标完成的,下标就是索引,从0开始,下标最大的取值是长度-1(length -1),下标可以是变量或者表达式,例如:
    var arr = [10, 20, 30, 40, 50];
    alert(arr[1+2]);  //输出40,相当于取arr[3]的值。

  20. 使用for in 进行数组遍历,例如:
    var arr = ["red","blue","black"];
    for(var i in arr){
        document.write(arr + ",");    //输出red,blue,black
    }

  21. 数组中的方法:①【格式】 数组.push() 【功能】给数组末尾添加元素 【参数】一个或多个 【返回值】添加元素后,数组的长度。例如:

    var arr = ["钢铁侠", "雷神", "绿巨人"];
    arr.push("蜘蛛侠","快银");
    alert(arr);    //输出钢铁侠,雷神,绿巨人,蜘蛛侠,快银
    =============================================
    var arr = ["钢铁侠", "雷神", "绿巨人"];
    var res = arr.push("蜘蛛侠","快银");
    alert(arr);    //输出钢铁侠,雷神,绿巨人,蜘蛛侠,快银
    alert(res);   //返回 5 ,即添加元素后,数组的长度。
    =============================================
    ②【格式】数组.pop()【功能】移除数组末尾的最后一个元素【返回值】移除的元素。【参数】无。例如:
    var arr = ["钢铁侠", "雷神", "绿巨人"];
    var res = arr.pop();
    alert(arr);    //输出钢铁侠,雷神
    alert(res);   //输出绿巨人
    =============================================

    shift() 【格式】数组.shift();功能,从数组的头部取下一个元素,返回值为取下的元素。

    var arr = ["美队", "钢铁侠", "寡姐"];
    var res = arr.shift();
    alert (arr);    //输出钢铁侠,寡姐
    alert (res);    //输出美队
    =============================================
    unshift();【格式】数组.unshift();给数组头部添加元素【参数】一个或多个 【返回值】添加元素后,数组的长度。

    var arr = ["美队", "钢铁侠", "钢铁侠"];
    var res = arr.unshift("蜘蛛侠");
    alert(arr);    //输出蜘蛛侠,美队,钢铁侠,寡姐
    alert(res);    //输出4
    =============================================
    ④concat() 【功能】将两个数组合并成一个数组,源数组不会被改变【格式】数组1.concat(数组2)【返回值】合并好的新数组【参数】要合并的数组,例如:

    var arr1 = ["美队", "绿巨人", "寡姐"];
    var arr2 = ["蜘蛛侠", "钢铁侠"];
    var arr3 = arr1.concat(arr2);
    alert(arr3);    //输出美队,绿巨人,寡姐,蜘蛛侠,钢铁侠
    alert(arr1);    //输出美队,绿巨人,寡姐
    alert(arr2);    //输出蜘蛛侠,钢铁侠
    =============================================

    slice();
    【格式】数组.slice(start, end);
    【功能】:基于当前数组获取指定区域元素并创建一个新数组。原数组不改变。
    【参数】:start开始获取区域的下标,end获取结束区域的下标,注意,获取的范围不包括end下标位置的元素。
    【返回值】:指定区域元素生成的新数组。例如:

    var arr = ["钢铁侠", "美国队长", "绿巨人", "寡姐"];
    var arr2 = arr.slice(1,3);
    alert(arr2); //输出美国队长,绿巨人
    alert(arr); //输出钢铁侠,美国队长,绿巨人,寡姐
    =====================================================

    splice();
    可以完成对数组元素的删除、插入、替换操作。
    【格式】:数组.splice(start, length, 元素...)
    【参数说明】:(参数1 截取的开始下标) (参数2 截取(删)的长度)(参数3 在截取的开始下标位置,我们要插入的元素,插入元素的个数随意。)
    【注意】:splice()会对源数组进行修改。
    【返回值】:截取掉的元素,组成的数组。例如:

    //删除数组中的元素
    var arr1 = ["美国队长", "钢铁侠", "寡姐", "绿巨人"];
    var arr2 = arr1.splice(1,1);
    alert(arr1); //输出美国队长,寡姐,绿巨人(钢铁侠删除了)
    alert(arr2); //输出钢铁侠
    ==================================================

    //替换数组元素(也就是先删除,再插入)
    var arr1 = ["美国队长", "钢铁侠", "寡姐", "绿巨人"];
    var arr2 = arr1.splice(1,2,"蜘蛛侠","鹰眼");
    alert(arr1); //输出美国队长,蜘蛛侠,鹰眼,绿巨人(钢铁侠和寡姐被替换成两个新英雄)
    alert(arr2); //输出钢铁侠,寡姐
    ==================================================

    //插入数组元素
    var arr1 = ["美国队长", "钢铁侠", "寡姐", "绿巨人"];
    var arr2 = arr1.splice(1,0,"蜘蛛侠","鹰眼");
    alert(arr1); //输出美国队长,蜘蛛侠,鹰眼,钢铁侠,寡姐,绿巨人(下标为1的开始位置成功插入了两个英雄)
    alert(arr2); //输出null

    ===============================================

    join();
    【格式】:数组.join(拼接符);
    【功能】:使用拼接符将数组中元素拼接成字符串;
    【参数】:拼接符
    【返回值】:拼接好的字符串
    【注】:原数组不改变

    var arr = [10, 20, 30];
    var res = arr.join("&");
    alert(res);    //输出10&20&30
    alert(arr);    //输出10,20,30
    ======================================================

  22. 数组的排序:
    sort();

    【格式】:数组.sort();
    【功能】:将数组中的元素升序排序。
    【注意】:sort()模式是按照字符串进行排序

    var arr = [5, 4, 2, 3, 1];
    var pai = arr.sort();
    alert(pai);    //输出 1,2,3,4,5
    =================================
    var arr = [10, 1, 5, 15];

    var pai = arr.sort();
    alert(pai);    //输出1,10,15,5,原因是因为sort()模式是按照字符串排序
    【一般情况下,我们需要自己编写排序的算法,系统提供的排序函数,用的比较少】
    ==========================================================================

    ①冒泡排序

    var arr = [9, 8, 7, 6, 5, 4];
    for(var i = 0; i < arr.length; i++){
    for(var j = 0 ; j < arr.length - i -1; j++){
    if(arr[j] > arr[j + 1]){
    var middle = arr[j+1];
    arr[j+1] = arr[j];
    arr[j] = middle;

    }
    }
    }
    alert(arr);    //输出4,5,6,7,8,9
    =================================================
    ②选择排序:
    通过比较先选出最小的数放在第一的位置上,然后在其余的数中选择次小数放在第二的位置上,以此类推,直到所有的数形成有序数列。

    var arr = [9, 8, 7, 6, 5, 4];
    for(var i = 0; i < arr.length - 1; i++){
    for(var j = i + 1; j < arr.length; j++){
    if(arr[i] > arr[j]){
    var tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    }
    }
    }
    alert(arr);    //输出4,5,6,7,8,9
    ====================================================

  23. 关于数组 复合数据类型(也叫引用数据类型)在计算机中存储的一些说明:
    先来看一个单变量的例子:
    var i = 10;
    function show(i){
    i = 5;
    alert(i);
    }
    alert(i); //输出10;
    show(i); //输出5;
    alert(i); //输出10;
    在这个例子中,由于变量的作用域关系,所以尽管第二个函数执行后,起作用的范围仅限该函数内部,执行完立即被释放掉,所以第三次输出仍然为10.
    而在下面的例子中:
    var arr = [10,20];
    function show(arr){
    arr.push(30,40);
    alert(arr);
    }
    alert(arr); //输出10,20
    show(arr); //输出10,20,30,40
    alert(arr);//输出10,20,30,40
    根据输出结果,我们可以知道:
    所有的复合类型(数组、对象object)都不直接存储在我们的函数中,是存储在内存的一个堆区域,在堆区域,可以任意分配内存空间,所有的符合类型数据,存储的都是门牌号(地址),这个类型的数据也叫做引用数据类型。
    ==========================================================

  24. 字符串:通常用常量来创建字符串,例如:var str = "hello";
    ①获得字符串的个数,【格式】字符串.length。例如:
    var str = "hello"; alert(str.length);   //输出5
    ==========================================

    访问字符串中的某个字符:charAt();
    var str = "hello";
    alert(str.charAt(1)); //输出e
    也可以通过另外一种简写方式alert(str[1]);访问输出e
    ==========================================
    注意:

    Ecmascript中字符串是不可变的,也就是说,字符串一旦创建,他们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。例如:
    var str = "hello";
    str[1] = "x";
    alert(str); //输出仍然为hello,如果要改变,那只能整体重新赋值,var str = "hxllo";
    ================================================

    +号可以作为字符串拼接符存在
    var str = "hello";
    alert(str + "world");//输出helloworld

  25. 关于字符串的函数:

    charCodeAt();
    【格式】:字符串.charCodeAt(下标);
    【返回值】:返回字符串中对应下标字符的ASCII码值

    var str = "hello";
    alert(str.charCodeAt(1)); //输出101;
    =============================================

    String.fromCharCode(ASCII码值);
    【参数】:ASCII值,个数任意
    【返回值】:ASCII码对应字符组成的字符串
    var str = String.fromCharCode(97,98,99);
    alert(str); //输出abc
    ================================================

    concat();
    可以用于对字符串进行拼接操作,注意,对原有字符串没有影响。
    var str1 = "hello";
    var str2 = "world";
    alert(str1.concat(str2)); //输出heloworld
    alert(str1); //输出hello
    alert(str2); //输出world
    一般情况下很少用concat拼接,直接用字符串拼接符+
    ==================================================

    indexOf();
    【格式】:字符串.indexOf(子串,开始查找的位置);
    【返回值】:如果在字符串中找到了子串第一次出现的位置,返回子串出现的位置,否则没有查找到返回 -1;

    var str = "abcabcabc";
    alert(str.indexOf("abc")); //输出0
    alert(str.indexOf("abc",1)); //从第一位开始查找,直至第三位找到,所以输出3
    alert(str.indexOf("abcd")); //输出-1,没找到
    ===================================================

    lastindexOf();
    【格式】:字符串.lastIndexOf(子串);
    【返回值】:如果在字符串中找到了子串最后一次出现的位置,返回子串出现的位置,否则没有查找到返回 -1;

    var str = "abcabcabc";
    alert(str.lastIndexOf("abc")); //输出6
    ===================================================

    search(子串/正则); 参数可以是正则表达式
    正则表达式用//开始和结束,还可以添加修饰符,比如 i 表示忽略大小写, g 表示全局匹配。

    var str = "Abcabcabc";
    alert(str.search("abc")); //js大小写敏感,输出3(从第4位才开始匹配到)
    alert(str.search(/abc/i)); //输出0(第1位就找到了,因为使用了正则修饰符i,使其忽略大小写);注意此处,如果启用正则,那么双引号就不需要了。
    ======================================================

    replace();
    【格式】:字符串.replace(匹配的字符串/正则表达式,替换成的新字符串);
    【返回值】:替换完成以后新生成的字符串。
    var str = "how are you";
    alert(str.replace("are","old are")); //输出how old are you
    alert(str); //依然还是输出how are you 注意之前讲过的字符串不能被修改,只能被重新创建。

    再来看一个例子:

    var str = "how Are are you";
    alert(str.replace("are","old are")); //只能匹配小写的are
    alert(str.replace(/are/ig,"old are")); //正则匹配了全局和忽略了大小写,输出how old are old are you
    ============================================================

    substring();
    【格式】:字符串.substring(start,end);
    【作用】:字符串提取,在指定范围内,提取字符串,生成新字符串。
    【返回值】:生成新的字符串。
    【注意】:不包含结束位置

    var str = "helloworld";
    alert(str.substring(2,4)); //输出ll
    ============================================================

    split();字符串分割
    【格式】:字符串.split(分隔符,生成的结果的个数);
    【返回值】:通过分隔符,分割成的装有子串的数组。
    var str = "This is a box";
    var arr = str.split(" ");
    alert(arr);//按照空格,分割成了单个单词
    ===================================
    var str = "This is a box";
    var arr = str.split(" ",2);
    alert(arr);//只输出this和is

    注意:分隔符是作为一个整体进行计算的,例如:

    var str = "This is a box";//this两个空格is一个空格a一个空格box
    var arr = str.split(" ");//两个空格
    alert(arr);//按照两个空格,分割成了This和is a box;
    ==========================================
    再例如:
    var str = "This is a box";//this两个空格is一个空格a一个空格box

    var arr = str.split(" ");//一个空格
    alert(arr);//输出this,,is,a,box(分出一个空字符串)
    ====================================
    再例如

    var str = "This is a box";//this两个空格is一个空格a一个空格box
    var arr = str.split("");//空字符串(没有空格)
    alert(arr);//逐个进行分割输出,t,h,i,s,,,i,s,,a,,b,o,x
    ====================================

  26. 从字符串到数组,可以使用split();    从数组到字符串可以使用join();

    var str = "This is a box";
    var arr = str.split(" ");
    alert(arr);
    alert(arr.join("&"));

    ====================================================
  27. var str = "This is A box";
    alert(str.toLowerCase());  //输出小写
    alert(str.toUpperCase());  //输出大写
    ====================================================

以上是关于js基础杂记的主要内容,如果未能解决你的问题,请参考以下文章

js杂记

js杂记

java基础(杂记)

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录