2021/12/25

2021年12月25号

一、算法题

(1)输出最大最小值

1.比较三个数,并输出最大的数

var a =1;
var b= 2;
var c =3;
 if (a > b) {
        if (a > c) {
            console.log(a);
        }
        else {
            console.log(c);
        }
    } else {
        if (b > a) {
            if (b > c) {
                console.log(b);
            }
            else {
                console.log(c);
            }
        }
    }

2.输入三个数,并打印出三个数中最大的数字:

方法一:if-else判断:

var a = prompt('请输入第一个数');
    var b = prompt('请输入第二个数');
    var c = prompt('请输入第三个数');
    if (a > b) {
        if (a > c) {
            alert(a);
        }
        else {
            alert(c);
        }
    } else {
        if (b > a) {
            if (b > c) {
                alert(b);
            }
            else {
                alert(c);
            }
        }
    }



方法二:循环输入三个值,输出最大值

var Max=0;
var a; 
for(var i = 0;i<3;i++){
    a =prompt('请输入')
    if(a>Max){
        Max=a;
    }
}
    alert(Max);
   
    

3.导入一串数据,输出数据的(或最小值)

 function fn() {
        var max = 0;
        var a;
        for (var i = 0; i < arguments.length; i++) {
            if (arguments[i] > max)
                max = arguments[i]
        }
        console.log(max);
    }
    fn(1, 2, 3, 4, 6, 8, 0)

4.用户在输入框输入 数字个数手动循环输入一串数字,输出最大值

var nums = prompt("请输入数字个数:")
    var arr = []
    var num
    for (var i = 0; i < nums; i++) {
      num = prompt(`请输入第${i + 1}个数`)
      arr.push(parseInt(num))
    }
    console.log(arr);
    function fn(arr) {
      var max = arr[0];
      var a;
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] > max)
          max = arr[i]
      }
      alert(`最大值为${max}`)
    }
    fn(arr)

5.随机复制一串数据类似的1,2,56,89,560…这样的随机个数的数字,进入输入框输出最大值或者最小值

方法一:

let res = prompt("输入,逗号分隔");
     console.log(res.split(','));
     console.log(Math.max.apply(null, res.split(',')));
    

方法二:数组

var a = prompt("请输入要比较的数字")
    arr = a.split(" ")
    var arr2 = []
    for (var i = 0; i < arr.length; i++) {
      arr2.push(parseInt(arr[i]))
    }
    function fn(arr2) {
      var max = arr2[0];
      var a;
      for (var i = 0; i < arr2.length; i++) {
        if (arr2[i] > max)
          max = arr2[i]
      }
      alert(`最大值为${max}`)
    }
    fn(arr2)

(2)输出质数

//打印100以内的质数
    //思考的思路就是只有质数i被j(1到i的数)整除2次。超过2次就不是质数
    var count = 0;
    for (var i = 2; i < 100; i++) {//1不是质数
        for (var j = 1; j <= i; j++) { //因为要判断1和本身所以1=<j<=i
            if (i % j == 0) {

                count++   //c为整除次数
            }
        }
        if (count == 2) {
            console.log(i);
        }
        count = 0;//要把c清零,因为每一次循环都要记被整除的次数
    }

二、一些问题

tcp三次握手四次挥手
tcp和udp的区别
http协议在哪一层,tcp协议在哪一层
OSI七层模型
讲一下几种设计模式
css animate
手写url参数解析
http-only啥意思
css选择器优先级
eventbus原理
vue.use发生了什么
Vue 的单向数据流
Vuex 中 action 和 mutation 有什么区别

三、引用值

(1)array(数组)

var arr = [1, 2, 3, 4, 5, 6, undefined, null];  // (标准写法:每个逗号后面都有一个空格)
console.log(arr[5]);//6

1.给数组赋值

arr[3]=null;
console.log(arr[3]);//null

2.求数组长度

console.log(arr.length);//6

3.循环输出数组里的数据

for(var i = 0;i < arr.length;i++){
    console.log(arr[i]);
}

4.循环输出赋值

for(var i = 0 ;i < arr.length;i++){
    arr[i]+=2;
    console.log[arr[i]];
}

==注意:==当console.log[arr]在for循环里面会出现下图,

所以循环输出数组里面数据时,最好把console.log[arr]放在for{}外面

或者console.log(arr[i])放在for{}里面

for (var i = 0; i < arr.length; i++) {    //数组最大下标=数组长度-1
        console.log(arr);
    }
image-20211225151131179

(2) object (对象)

1.属性名(键名):属性值(键值),

var person = {

        name: 'sz',//属性名/键名:属性值/键值,
        age: 23,
        height: 175,
        weight: 140,
        job: 'web开发工程师'
         }

2.赋值

person.name='ym';//给属性值赋值
console.log(person.name);//从sz变成ym

(4)function

(5)RegExp(正则)

四、typeof

(1)数据类型

 console.log(typeof ('123'));//string
    console.log(typeof (123));//number
    console.log(typeof (true));//boolean

(2)object

​ 1.下面的object不是具体的声明的对象(object),他表示引用类型

object(对象)和array(数组)都属于大的Object(引用类型)

console.log({});//object
    console.log(typeof ([]));//object

2.思考下面为什么是object,

null不是原始值吗,(应该空值返回false),怎么变成引用类型了?

 console.log(typeof (null));//object

理由:null是一个bug,最早出来的时候,是为了指定空对象而被造出,实际上是指空对象的一个指针,也是空对象的一个占位符

实际上,最早开始就把它说成一个引用类型,但是,大约2014,15年前期,es6提案的时候,很多人都说把null改成null的类型,但是被ECMA拒绝了。

为什么拒绝? 原因是:这是一个历史的遗留问题,不可能es6出来之后,要求所有人把浏览器的js包括所有代码都改掉。这很难。

image-20211225155249553

(3)undefined

console.log(typeof (undefined));//undefined;

(4)function

console.log(typeof (function () {}));//function

五、数据类型转换

(1)隐式类型转换

console.log(typeof("1"-"1"));//number

考点:

console.log(a);//报错
console.log(typeof(a));//undefined未被定义

任何typeof(typeof())输出的都是string类型

console.log(typeof(typeof(a)));//string
console.log(typeof (typeof (123)));//string

(2)显示类型转换

1.Number()

	var a = '123';
    console.log(Number(a) + '-' + typeof (Number(a)));//123-number
    
	var a = true;
    console.log(Number(a) + '-' + typeof (Number(a)));//1-number
   	
	var a =null;
	Number(a)//a转化成0 
	console.log(Number(a) + '-' + typeof (Number(a)));//0-number
	
	var a = undefined;
	Number(a)//a转化成NAN  NaN-number
	
	var a = 'a';
	Number(a);//转化成NAN 
	
	var a = '1a';
	Number(a);//转化成NAN NAN-number

	var a ='3.14';
	Number(a);//3.14   3.14-number

	console.log(Number('120px'));//NAN  ,praseInt('120px')输出是120
	//Number()里面带一点跟数字无关的类型都会变成NAN

2.parseInt

为什么不是跟number()一样吧true转换成1,而是NAN?

	var a = true;
    console.log(parseInt(a) + ' - ' + typeof (parseInt(a)));//NAN-number

原因:parseInt不管那么多,它只想转换成整型,所以它一定是跟数字相关的。(它只认识数字)false也是一样

而Number()是里面除了boolean类型有一点跟数字无关的都会变成NAN,比如带单位的120px

	var a = null;
    console.log(parseInt(a));//NAN

	var a = undefined;
	console.log(parseInt(a))//NAN

进制转换:其中a代表1 0;(16的一次方+0)

  var a = '10';
    console.log(parseInt(a, 16));//输出16  代表以16进制基础转化为10进制    

注意:

为什么NAN返回的是number类型?

解释:

1.因为NaN的数据类型就是数字,就是number;他是一个特殊的number。因为在js中数据类型之间都是可以相互转化的,这方便了其他数据类型转化为number(非数字转化为number类型便是NaN)

2.NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。NaN在Number对象下,也就是Number.NaN。它表示特殊非数字值,也是Number的一种类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值