文章目录
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);
}
(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包括所有代码都改掉。这很难。
(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的一种类型。