JS基础面试
1. JS是高级语言弱类型语言 脚本语言
1.1高级语言我们写完的代码不能直接执行,要先经过js引擎翻译成0101这种机器语言才能执行
1.2 弱类型语言变量可以在前一行设置为一个数字,下一行修改为一个字符串
1.3 脚本语言代码从上往下 逐行执行 只有遇到报错才会中止代码的执行
2. 程序运行机制
2.1 执行某个代码文件的时候,是先把代码从硬盘加载到内存当中
3. JS是由三部分组成
ECMAScript + DOM + BOM
4. JS的三种书写位置
行内 + 内部 + 外联
5. JS的输入输出语句
5.1 prompt 输入语句
5.2 alert 弹出语句
5.3 console.log 控制台输出
6. 变量的声明
6.1 变量声明 var a;
6.2 变量赋值 var a; a = 100;
6.3 变量初始化 var a = 100;
6.4 同时定义多个变量 var a = 1, b = 2, c = 3;
6.5 如果之声明变量,变量的值是 》 undefined
6.6 变量的命名规范》字母、数字、下划线、$开头
6.7 交换两个变量的三种方法
1 // 使用中间变量
2 var a = 10, b = 20 , temp = 0
3 temp = a
4 a = b
5 b = temp
6
7 // 使用ES6结构赋值
8 [b,a] = [a,b]
9
10 // 直接交换
11 a = a + b
12 b = a - b
13 a = a - b
7. 变量的数据类型
7.1 基本数据类型 number 、string、null、boolean、undefined
7.2 引用数据类型 object、array、function
7.3 两者区别》在比较和拷贝的时候基本数据类型参考的是值,引用数据类型参考的是地址
8. 数字类型
8.1 isNaN》判断一个变量是非数字类型,返回布尔值。isNaN(123) === false
8.3 字符串转换成数字类型》parseInt()/parseFloat()、Number(str)、str - 0
9. 字符串型
9.1 数字转换成字符串》String(123)、str + ' '
9.2 字符串的长度 str.length
9.3 模板字符串 ``
10. 哪些值是true 哪些是false
10.1 null、undefined、NaN、0、' '、false
11. 前置递增和后置递增的区别
11.1 前置先+1后运算,后置先运算再+1
1 var a = 10
2 // a++ = 10=> a = 11 => ++a => 12
3 var c = a++ + ++a // 10 + 12
12. 短路运算符(逻辑中断)
1 var a = 1
2 var b = 10
3 var c = a || b // c = 1 逻辑或一边为真就返回值
4 var d = a && b // d= 10 逻辑与两边为真才返回值
13. 运算符的优先级
13.1 括号 > 一元运算符 > 算数运算符 > 关系运算符 > 相等运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符
14 . 检测数据类型
14.1 typeof检测的6种数据类型(只能区分值类型,无法区分引用类型)
| 类型 | 返回值(string) |
|---|---|
| { } [ ] null | 'object' |
| String | 'string' |
| Number | 'function' |
| Boolean | 'function' |
| undefined | 'undefined' |
| Function | 'function' |
15. 三元表达式
15.1 条件表达式?表达式1:表达式2
16. 字符串补0
var str = 'abc'
var zstr = str.padStart(5,'0') // zstr = '00abc'
17. if-else和switch-case的区别
17.1 只有很多条件,并且条件是具体的值的时候用switch-case 性能高一点
17.2 if-else多用于一个范围
18. while,do-while,for循环的区别
18.1 for循环多用于知道具体循环多少次 最常用
18.2 while和do while用于不知道具体循环次数,且do while无论条件true 或 false都会执行一次
19. 冒泡排序
1 // 外循环控制轮数(被遍历属性长度-1)
2 // 内循环控制每轮的次数(被遍历属性长度-i-1)
3 // 这个无需推导,记住规律,实际很少开发用到
4 for(var i = 0; i < str.length - 1; i++){
5 for(var j = 0;i < str.length - i - 1; j++)
6 // TODO
7 }
20. break 和 continue
20.1 break结束所有循环,continue结束当前循环。(break理解为员工离职了,continue理解为员工请假了,但请假结束还得上班)
21. 数组的两种创建方式
1 var arr = [1,2,3,4,5] // 字面量
2 var arr = new Array(1,2,3,4,5) // 创建对象
22. 创建对象的三种方式
1 // 字面量
2 var obj = {
3 name:'roger',
4 age:0
5 }
6 // new
7 var obj = new Object();
8 obj.name = 'roger' // obj['name'] = 'roger'
9 obj.age = 0 // obj['age'] = 0
10 // 构造函数
11 function Person(name,age){
12 this.name = name
13 this.age = age
14 // 不需要return 返回结果
15 }
23. new的过程
在内存中开辟一个空间创建空对象
this指向这个空对象
执行构造函数里的代码夫给这个对象添加属性和方法
返回这个对象
24. 构造函数和对象的区别
构造函数时模板 是定义,泛指一大类,它会把对象的共有属性和方法抽象出来封装到函数中。
对象是具体的一个实例
25. JS内置对象有哪些
25.1 Math、Date
26. 遍历数组或对象
1 for(var i = 0; i < arr.length; i++)
2 arr.forEach((item,index) => {})) // 书写简单一些,但是无法中途退出循环 return
3 for(var key in obj){
4 console.log(obj[key])
5 }
27. 数组常用方法
push、pop、shift、unshift、sort、reverse、 concat、 findIndex、find、 slice、join、 some、 every、 filter、forEach、map、reduce
28. 字符串常用方法
charAt、charCodeAt、indexOf、lastIndex、split、slice,substr、substring、repeat、startsWidth、endsWith
toUpperCase、toLowerCase、trim、replace
29. 函数的三种定义方法
1 function fn() {}
2 var fn = function(){}
3 Function fn('a','b','return a + b') // 了解即可
30. 预解析的理解
30.1 变量名字会提升(注意只适用于var声明的变量),函数会整体提升
31.作用域链的理解
函数内部访问函数外部的变量的优先级,当存在函数嵌套关系时,遵循就近原则
如果当前作用域的变量没用var声明 那么会从父级域中找。
32. 时间戳
1 var date = +new Date() // 距离1970年到现在的毫秒数
2 var date = Date.now()
33. Math对象的使用
34.判断变量是否是数组的两种方式
arr.isArray()
Object.prototype.toString.call(arr)
35.基本包装类型
string,number,boolean也可以像对象一样使用
当我们把它们当成对象来使用的时候,会临时把它们包装成对象,得到结果之后,再把这个对象销毁
36.字符串不可变的应用
不要频繁+=拼接字符串
如果涉及到拼字符串的时候,思路先创建一个数组,push,最后统一join性能更高一点
37.数组去重的两种方法
1 // Es6
2 var arr = [11,11,11,22,22,33,33]
3 var newArr = [...new Set(rr)]
4
5 // indexOf 根据指定的元素返回对应的索引,如果不存在返回-1
6 var arr1 = []
7 arr.forEach(item => {
8 if(arr1.indexOf(item) == -1) return arr1.push(item) // 如果条件为假,说明数组种已经出现过了,则不添加
9 })
JS基础面试的更多相关文章
- js基础面试篇
1,js中的new做了什么? function Person () { this.name = name; this.age = age; this.sex = sex this.sayName = ...
- js基础面试高频面点1:变量提升
一.什么是变量提升?var变量提升的底层原理是什么? 变量提升的定义:所有变量的声明语句都会被提升到代码头部,这就是变量提升. 原理:引擎在读取js代码的过程中,分为两步,专业来说代码运行是分为预处理 ...
- js 基础面试
1.['1', '2', '3'].map(parseInt) let arr = ['1', '2', '3'] let res1 = arr.map(Number) // [ 1, 2, 3 ] ...
- JS基础-全方面掌握继承
前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行, ...
- 前端面试题目汇总摘录(JS 基础篇)
JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...
- 前端工程师面试问题归纳(一、问答类html/css/js基础)
一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...
- 前端面试题目汇总摘录(JS 基础篇 —— 2018.11.02更新)
温故而知新,保持空杯心态 JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string type ...
- 慕课网-前端JavaScrpt基础面试技巧-学习笔记
章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作 ...
- js基础:关于Boolean() 与 if
最近面试比较多,但每次我问这个问题的时候,答出来的同学并不多 var a = 0; if( a) { alert(1); } 这个问题有部分人会答alert(1), 有些人会答不执行. 结果是不执 ...
随机推荐
- scrum项目冲刺_day04总结
摘要:今日完成任务. 1.图像识别已优化 2.语音识别正在进行 3.搜索功能 正在进行 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能(已完成) 2.语音识别功能 3.垃圾搜 ...
- Django学习day07随堂笔记
今日考题 """ 今日考题 1.必知必会N条都有哪些,每个都是干啥使的 2.简述神奇的双下划线查询都有哪些方法,作用是什么 3.针对多对多外键字段的增删改查方法有哪些,各 ...
- PHP中命名空间是怎样的存在(一)?
命名空间其实早在PHP5.3就已经出现了.不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架.这次我们不从框架的角度,仅从简单的代码角度来 ...
- python学习笔记(十二)-网络编程
本文结束使用 Requests 发送网络请求.requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到.可以说,Requests 完全满足如今网络的需求. ...
- python3之cx_Freeze使用(PyQt5)
1. cx_Freeze简介 Python脚本在装有Python的系统中可以直接双击运行,但绝大多数普通用户并没有配置此类环境,而编译为可执行二进制文件后,用户无需预先安装Python及依赖库即可 ...
- 请求既有multipartFile,也有实体的解决方案
上回书我们说到,我们在发文件上传请求的时候,携带数据 this.fileData.append('trainName', this.dataModel.trainName); // 添加培训名称 然后 ...
- 踩坑系列《八》解决Win10没有找到Hyper-v的错误
最近要安装docker,所以得开启Hyper属性面板,找了下,发现电脑上没有看到该属性. 在这之前,得先判断,你电脑是不是支持Hyper,打开cmd窗口,输入systeminfo 看看最下面Hyper ...
- 测试开发【提测平台】分享12-掌握日期组件&列表状态格式化最终实现提测管理多条件搜索展示功能
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 本章内容思维导图如下,由于需要各种状态下的菜单操作,所以需要先实现提测信息的列表基础页面,然后再推进其他需求开发 基本知识点学习 Date ...
- 从零入门 Serverless | 教你使用 IDE/Maven 快速部署 Serverless 应用
作者 | 许成铭(竞霄) 阿里云开发工程师 SAE 应用部署方式 1. SAE 概述 首先,简单介绍一下 SAE.SAE 是一款面向应用的 Serverless PaaS 平台,支持 Spring C ...
- 题解 UVA1500 Alice and Bob
题目传送门 题目大意 给出 \(n\) 堆石子,每次可以做以下两种操作之一: 将某两堆石子进行合并 将某一堆石子抽走一个石子 问谁必胜. 思路 就nm很妙好么? 首先,我们需要考虑每堆石子大小都 \( ...