JS复习(拟)

JS复习(拟)


简答题(拟)

变量的命名规则

  1. 变量必须以字母开头
  2. 变量也能以$和_开头(不推荐)
  3. 变量名不能包含空格或其它标点符号
  4. 变量名称对大小写敏感

变量作用域

​ 变量分为 全局变量局部变量

全局作用域
  • 变量在函数外定义,即为全局变量
  • 全局变量有全局作用域:网页中所有脚本函数均可使用
  • 如果变量在函数内没有使用var关键字声明,该变量为全局变量
局部作用域
  • 变量在函数内声明,即为局部变量
  • 局部变量有局部作用域只能函数内访问
变量生命周期
  • 局部变量:在函数开始执行时创建,函数执行完后局部变量会自动销毁
  • 全局变量在页面关闭后销毁

变量提升

​ JS引擎的工作方式是:先解析代码,获取所有被声明的变量,然后再一行一行地运行代码。这样所有变量声明语句都会被提升到代码头部执行,这就叫做变量提升

注意:底部的变量只是声明提升,赋值不提升


数据类型

​ 两大数据类型:基本数据引用数据

基本数据类型
  1. 字符串类型(String)
  2. 数值类型(Number)
  3. 布尔类型(Boolean)
  4. Undefined类型(只有一个值undefined)
  5. Null类型(只有一个值null)
引用数据类型

​ 通常也叫作,也就是说,遇到引用值时,所处理的就是对象

  1. Object类型(对象类)
  2. Array类型(数组类)
  3. Date类型(日期类)
  4. RegExp类型(正则表达式类)
  5. Function类型(函数类)
区别
  • 基本数据类型,指的是简单的数据段
  • 引用数据类型,指由多个值构成的对象
  • 当把对象赋值给另一个变量时,解析器首先要做的是确认这个值是基本数据类型还是引用数据类型

关键字和保留字(作为知识点理解,无大题)

  • 如果将保留字用作变量名或函数名,那么除非将来的浏览器实现了该保留字,否则很可能收不到任何错误信息。当浏览器将其实现后,该单词被看做关键字,如此将出现关键字错误
  • 除了保留字和关键字,JS对eval和arguments还加了限制。在严格模式下,这两个名字也不能作为标识符或属性名,否则会抛出错误

循环语句

​ 循环语句也称迭代语句,让程序重复执行某个程序块,直到某个特定表达式的结果为假时,程序结束循环

  1. for语句
  2. for…in语句
  3. while语句
  4. do…while语句

break和continue

​ 用于循环中精确地控制代码的执行(break还可以用于switch…case语句中)

  • break:可以立即推出小循环,阻止再次反复执行任何代码
  • continue:只是退出当前循环,根据表达式还允许继续进行下一次循环

对象

​ 所谓对象,就是一种无序集合,由**若干个“键值对(key-value)”**构成

两个层次理解
  1. “对象”是单个实物的抽象
  2. “对象”是一个容器,封装了**“属性”“方法”**

对象的属性和方法

属性
  • 所谓属性,就是对象的状态
  • 属性可以是任何类型,甚至包括其他对象函数
特性
  1. 只读
  2. 无法枚举
  3. 无法删除
方法
  • 所谓方法,就是对象的行为(完成某种任务)
  • 函数作为对象属性时,也被叫做方法

对象的特性

  1. 抽象性
  2. 封装性
  3. 继承性
  4. 多态性
继承性

​ 继承也可以理解为扩展性。继承可以解决代码复用,让编程更加靠近人类思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类定义这些相同的属性和方法,所有的子类不要重新定义这些属性和方法,只需要继承父类中的属性和方法

继承方式
  1. 对象冒充

    <script>
        function Father(name) {
        	this.name = name;
        	this.show = function() {
            	alert("姓名:" + this.name);
     		}
      	}
    
    	function Son(name) {
        	this.son = Father;
            this.son(name);
      	}
    
    	var person = new Son("张三");
    	person.show();
    </script>
    
  2. 通过call或者apply来实现

    <script>
        function Father(name) {
        	this.name = name;
        	this.show = function() {
                alert("姓名:" + this.name);
            }
    	}
    
    	function Son(name) {
            Father.call(this, name);
        }
    
    	var person = new Son("张三");
    	person.show();
    </script>
    
多态性

​ 多态性是指相同操作方式带来不同的结果。从形式上来说,有两种多态。分别为重载覆盖覆盖是指子类父类的行为做了修改,虽然行为相同,但结果不同重载:是指某一对象的相同行为导致了不同的结果。多态一方面加强了程序的灵活性适应性,另一方面也可以减少编码工作量

两种多态
  1. 覆盖:是指子类父类的行为做了修改,虽然行为相同,但结果不同
  2. 重载:是指某一对象的相同行为导致了不同的结果

concat()方法

  • concat()方法可以基于当前数组中的所有项创建一个新数组

  • concat()方法传递参数的情况下,它只是复制当前数组返回副本

  • 如果concat()方法的是一个或多个数组,则该方法会将这些数组中的每一项添加到结果数组

  • 如果传递值不是数组,这些值就会被简单地添加到结果数组末尾

    <script>
        var arr = [1, 2, 3, 4];
    	var arr1 = arr.concat();
    	var arr2 = arr.concat([2, 4, 6, 8]);
    	var arr3 = arr.concat(10);
    
        console.log(arr);	// (4) [1, 2, 3, 4]
        console.log(arr1);	// (4) [1, 2, 3, 4]
        console.log(arr2);	// (8) [1, 2, 3, 4, 2, 4, 6, 8]
        console.log(arr3);	// (5) [1, 2, 3, 4, 10]
    </script>
    

编程题&操作题(拟)

用if语句输出成绩和等级 优秀 良好 中等 及格 不及格

<script>
    // 用if语句输出成绩和等级 优秀 良好 中等 及格 不及格
    var score = parseInt(window.prompt("input"));	// 或这行写 var score = parseInt(prompt("input")); window.省略

    document.write(score);
    if (score >= 90 && score <= 100) {
        document.write("优秀");
    }
    if (score >= 80 && score < 90) {
        document.write("良好");
    }
    if (score >= 70 && score < 80) {
        document.write("中等");
    }
    if (score >= 60 && score < 70) {
        document.write("及格");
    }
    if (score >= 0 && score < 60) { // 或这行写 else {
        document.write("不及格");
    }
</script>

数组arr=[1, 2, 3, 4, 5, 6, “abc”]的最后一项删除,为数组增加一项7,将数组顺序翻转,数组中每一项1,将数组中的各项输出,并写出结果

<script>
    // 数组arr=[1, 2, 3, 4, 5, 6, "abc"]的最后一项删除,为数组增加一项7,将数组顺序翻转,数组中每一项1,将数组中的各项输出,并写出结果
    var arr = [1, 2, 3, 4, 5, 6, "abc"];
    arr.pop();      // 删除最后一项
    arr.push(7);    // 在最后加一项,值为7
    arr.reverse();  // 数组翻转

    for (var i = 0; i < arr.length; i++) {
        arr[i] += 1;            // 数组每一项加1
        console.log(arr[i]);    // 控制台输出每一项
    }
</script>

for循环打印1~100内7和7的倍数

<script>
    // for循环打印1~100内7和7的倍数
    // var i = 0;	// 她给的PPT把这句给支棱外边是想干啥,然后for循环自己填充的,我觉得按照下面这么写就行??
    for (var i = 1; i <= 100; i++) {
        if (i % 7 == 0) {
            document.write(i);
        }
    }
</script>

while循环打印100以内7的倍数或者含有7的数 PPT代码有问题!!??

<script>
    // while循环打印100以内7的倍数或者含有7的数 PPT代码有问题!!??
    var i = 0;
    while (i <= 100) {
        if (i % 7 == 0 || i % 10 == 7) {
            document.writeln(i);
        }

        i++;
    }
</script>

产生[min, max]区间内n个不重复的随机数,并打印输出

<script>
    // 产生[min, max]区间内n个不重复的随机数
    // 这道题PPT给的是一个实现体感功能的函数,没有提到如何调用,如果题干没有明确说明从键盘输入或给定n min max的值我觉得可以不用调用
    function myRan(n, min, max) {
        var arr = [];   // 定义一个空数组装这些随机数
        for (var i = 0; i < n; i++) {   // 遍历生成n个随机数
            /* Math.random()方法默然返回区间[0, 1)的随机小数
               Math.random() * (max - min + 1) + min 固定公式 求区间[min, max]内的随机小数
               parseInt()对求得的随机小数取整
               别忘了把结果存数组里
            */
            arr[i] = parseInt(Math.random() * (max - min + 1) + min);  
            // 下面是个去重操作 把当前生成的随机数去跟已经存进数组的随机数比较,如果有重复的把i-1就可以重生成一个
            for (var j = 0; j < i; j++) {
                if (arr[i] == arr[j]) {
                    i = i - 1;
                    break;
                }
            }
        }

        return arr;
    }

    // 书上的调用并打印输出,可做修改
    var str_ran = myRan(10, 20, 100);
	console.log(str_ran.toString());
</script>

求n的阶乘,n可输入 递归&非递归

<script>
    // 求n的阶乘,n可输入 非递归
    var n = parseInt(window.prompt("input"));
    var mul = 1;

    for (var i = 1; i <= n; i++) {
        mul *= i;
    }

    document.write(mul);
</script>
<script>
    // 求n的阶乘,n可输入 递归
    function factorial(n) {
        if (n == 1) {
            return 1;
        }

        return n * factorial(n - 1);
    }

    var n = parseInt(window.prompt("input"));


    document.write(factorial(n));
</script>

求斐波那契数列第n项,n可输入 递归

<script>
    // 求斐波那契数列第n项,n可输入 递归
    function fb(n) {
        if (n == 1 || n == 2) {
            return 1;
        }

        return fb(n - 1) + fb(n - 2);
    }

    var n = parseInt(window.prompt("input"));
    document.write(fb(n));
</script>

输入 a b c 三个数,打印出最大的一个数

<script>
    // 输入 a b c 三个数,打印出最大的一个数
    var a = parseInt(window.prompt("请输入a的值"));
    var b = parseInt(window.prompt("请输入b的值"));
    var c = parseInt(window.prompt("请输入c的值"));

    if (a > b) {
        if (a > c) {
            document.write(a);
        } else {
            document.write(c);
        }
    } else {
        if (b > c) {
            document.write(b);
        } else {
            document.write(c);
        }
    }
</script>

用parseInt(),toString()方法,把某进制数转化为8进制或16进制过程和结果

<script>
	// 用parseInt(),toString()方法,把某进制数转化为8进制或16进制过程和结果
    // 例如把二进制的1010转化为十六进制的数输出
    var res = parseInt("1010", 2).toString(16);
	console.log(res);
	// parseInt(给的数, 给的进制).toString(要转化的进制)
	// 注意给的数在传入parseInt()作为第一个参数时,一定要加引号,因为是作为一个字符串形式,第二个参数和toString()的参数则不加引号,因为作为数值
</script>

其它题(拟)

……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值