2.4 Math.max() 函数返回一组数中的最大值。如果给定的参数中至少有一个参数无法被转换成数字,则会返回 NaN。如果没有参数,则结果为- Infinity。
示例:
Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20
2.5 Math.min() 返回零个或更多个数值的最小值。
示例:
Math.min(10, 20); // 10
Math.min(-10, -20); // -20
Math.min(-10, 20); // -10
2.6 Math.pow() 函数返回基数(base
)的指数(exponent
)次幂,即 baseexponent
。
示例:
console.log(Math.pow(7, 3));
// expected output: 343
console.log(Math.pow(4, 0.5));
// expected output: 2
console.log(Math.pow(7, -2));
// expected output: 0.02040816326530612
// (1/49)
console.log(Math.pow(-7, 0.5));
// expected output: NaN
2.7 Math.random() 函数返回一个浮点数, 伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。Math.random()
不能提供像密码一样安全的随机数字。
示例:
function getRandom() {
return Math.random(); // 0~1 之间随机数
}
2.8 Math.round() 函数返回一个数字四舍五入后最接近的整数。如果参数的小数部分大于0.5,则舍入到相邻的绝对值最大的整数。如果参数的小数部分小于0.5,则舍入到响铃的绝对值更小的整数。如果参数部分恰好等于0.5,则舍入到相邻的正无穷方向上的整数。注意,Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下。)
示例:
x = Math.round(20.49) // 20
x = Math.round(20.5) // 21
x = Math.round(-20.5) // -20
x = Math.round(-20.51) // -21
二、Date对象
========
创建一个 JavaScript Date
实例,该实例呈现时间中的某个时刻。Date
对象则基于 Unix Time Stamp,即自1970年1月1日(UTC)起经过的毫秒数。创建一个新Date
对象的唯一方法是通过new
操作符,例如:let now = new Date()
year
表示年份的整数值。 0到99会被映射至1900年至1999年,其它值代表实际年份。参见 示例。
monthIndex
表示月份的整数值,从 0(1月)到 11(12月)。
date可选
表示一个月中的第几天的整数值,从1开始。默认值为1。
hours
可选
表示一天中的小时数的整数值 (24小时制)。默认值为0(午夜)。
minutes
可选
表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为0。
seconds
可选
表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为0。
milliseconds
可选
表示一个完整时间的毫秒部分的整数值。默认值为0。
1.常用方法
1.1Date.prototype.getDate() 根据本地时间,返回一个指定的日期对象为一个月中的哪一日(从1–31)。
示例:
获取指定日期
const birthday = new Date(‘August 19, 1975 23:15:30’);
const date1 = birthday.getDate();
console.log(date1);
// expected output: 19
获取当前日期
let getToday = new Date()
console.log(getToday.getDate()); // 22
1.2 Date.prototype.getDay() 方法根据本地时间,返回一个具体日期中一周的第几天,根据本地时间,返回一个0到6之间的整数值,代表星期几: 0 代表星期日, 1 代表星期一,2 代表星期二, 依次类推。
示例
获取当前星期
let arr = [‘星期日’,‘星期一’,‘星期二’,‘星期三’,‘星期四’,‘星期五’,‘星期六’] // 因为0表示星期日,所以需要放在数组首位
let now = new Date()
let now1 = now.getDay()
console.log(arr[now1]); // ‘星期日’
1.3 Date.prototype.getFullYear() 方法根据本地时间返回指定日期的年份。
示例:
let today = new Date();
console.log(today.getFullYear()); // 2021
1.4 Date.prototype.getHours() 方法根据本地时间,返回一个指定的日期对象的小时。返回值为一个0 到 23之间的整数值。
示例:
let now = new Date();
console.log(now.getHours()); // 14
1.5 Date.prototype.getMonth() 根据本地时间,返回一个指定的日期对象的月份,为基于0的值(0表示一年中的第一月)。因此在获取当前月份结果后应+1
onst now = new Date();
console.log(now.getMonth()+1); // 8
1.6 Date.prototype.getSeconds() 方法根据本地时间,返回一个指定的日期对象的秒数。返回值为一个 0 到 59 的整数值。
const now = new Date();
console.log(now.getSeconds()); // 21
1.7 Date.prototype.getTime() 方法的返回值一个数值,表示从1970年1月1日0时0分0秒(UTC,即协调世界时)距离该日期对象所代表时间的毫秒数。
const now = new Date();
console.log(now.getTime()); // 1629614686166
1.8 Date.now() 方法返回自 1970 年 1 月 1 日 00:00:00 (UTC) 到当前时间的毫秒数。因为 now()
是 Date
的一个静态函数,所以必须以 Date.now()
的形式来使用。注意:为了提供针对定时攻击和指纹追踪的保护,Date.now()
的精度可能会根据浏览器的高级设置项目而被取整。
console.log(Date.now()); //1629614995699
三、Array对象
=========
JavaScript的 **Array**
对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。
1.push:添加元素到数组的末尾 改变原数组 (打印函数体,将展示length)
let fruits = [“Apple”, “Banana”]
console.log(fruits.push(‘Orange’)) // 3
console.log(fruits) // [“Apple”, “Banana”,“Orange”]
2.pop:删除数组末尾的元素 改变原数组 (打印函数体,将展示被删除的元素)
let fruits = [“Apple”, “Banana”,“Orange”]
console.log(fruits.pop()) // “Orange”
console.log(fruits) // [“Apple”, “Banana”]
3.shift:删除数组最前面(头部)的元素 改变原数组 (打印函数体,将展示被删除的元素)
let fruits = [“Apple”, “Banana”,“Orange”]
console.log(fruits.shift()) // “Apple”
console.log(fruits) // [“Banana”,“Orange”]
4.unshift:添加元素到数组的头部 改变原数组 (打印函数体,将展示length)
let fruits = [“Banana”,“Orange”]
console.log(fruits.unshift(“Apple”)) // 3
console.log(fruits) // [“Apple”,“Banana”,“Orange”]
5.indexOf找出某个元素在数组中的索引
fruits.push(‘Mango’);
// [“Strawberry”, “Banana”, “Mango”]
var pos = fruits.indexOf(‘Banana’);
// 1
6.fill给数组填充元素 fill(value,start,end) 注意:end为开区间,不包括end 改变原数组
arr = [1,2,3,4]
console.log(arr.fill(‘我’,1,3)); // [0,‘我’,‘我’,4]
7.判断数组中是否包含某元素 返回布尔值
const array1 = [1, 2, 3];
console.log(array1.includes(2));
// expected output: true
const pets = [‘cat’, ‘dog’, ‘bat’];
console.log(pets.includes(‘cat’));
// expected output: true
8.isArray() 判断是否为数组 返回布尔值
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray(“foobar”);
// false
Array.isArray(undefined);
// false
9.slice 截取数组中的元素 slice(start,end) 不改变原数组
const animals = [‘ant’, ‘bison’, ‘camel’, ‘duck’, ‘elephant’];
console.log(animals.slice(2));
// expected output: Array [“camel”, “duck”, “elephant”]
console.log(animals.slice(2, 4));
// expected output: Array [“camel”, “duck”]
10.删除或替换现有元素或者原地添加新的元素 splice(start,删除个数,需要添加的元素) 改变原数组
const months = [‘Jan’, ‘March’, ‘April’, ‘June’];
months.splice(1, 0, ‘Feb’);
console.log(months);
// expected output: Array [“Jan”, “Feb”, “March”, “April”, “June”]
四、String对象
==========
String
全局对象是一个用于字符串或一个字符序列的构造函数。
1.charAt() 方法从一个字符串中返回指定的字符。
let str = ‘12345’
console.log(str.charAt(1)) ; // 2
console.log(str.charAt(4)); // 5
2.concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat() 方法不改变原字符串
注意:在性能方面 强烈建议使用赋值操作符(+, +=)代替 concat 方法。
let hello = 'Hello, ’
console.log(hello.concat(‘Kevin’, ‘. Have a nice day.’))
// Hello, Kevin. Have a nice day.
3.includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。
includes() 方法是区分大小写的。例如,下面的表达式会返回 false :
‘Blue Whale’.includes(‘blue’); // returns false
var str = ‘To be, or not to be, that is the question.’;
console.log(str.includes(‘To be’)); // true
console.log(str.includes(‘question’)); // true
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
完整版面试题资料免费分享,只需你点赞支持,动动手指点击此处就可免费领取了。
回顾项目
往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。
面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。
重点在于基础知识
这里指的基础知识包括:前端基础知识和学科基础知识。
前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。
学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue
这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。
回顾项目
往往在面试时,面试官根据你简历中的项目由点及面地展开问答,所以请对你做过的最好的项目进行回顾和反思。回顾你做过的工作和项目中最复杂的部分,反思你是如何完成这个最复杂的部分的。
面试官会重点问你最复杂的部分的实现方法和如何优化。重点要思考如何优化,即使你项目中没有对那部分进行优化,你也应该预先思考有什么优化的方案。如果这部分答好了,会给面试官留下很不错的印象。
重点在于基础知识
这里指的基础知识包括:前端基础知识和学科基础知识。
前端基础知识:html/css/js 的核心知识,其中 js 的核心知识尤为重要。比如执行上下文、变量对象/活动对象(VO/AO)、作用域链、this 指向、原型链等。
学科基础知识:数据结构、计算机网络、算法等知识。你可能会想前端不需要算法,那你可能就错了,在大公司面试,面试官同样会看重学生这些学科基础知识。
你可能发现了我没有提到React/Vue
这些框架的知识,这里得说一说,大公司不会过度的关注这方面框架的知识,他们往往更加考察学生的基础。
这里我的建议是,如果你至少使用或掌握其中一门框架,那是最好的,可以去刷刷相关框架的面试题,这样在面试过程中即使被问到了,也可以回答个 7788。如果你没有使用过框架,那也不需要太担心,把重点放在基础知识和学科基础知识之上,有其余精力的话可以去看看主流框架的核心思想。