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基础面试的更多相关文章

  1. js基础面试篇

    1,js中的new做了什么? function Person () { this.name = name; this.age = age; this.sex = sex this.sayName = ...

  2. js基础面试高频面点1:变量提升

    一.什么是变量提升?var变量提升的底层原理是什么? 变量提升的定义:所有变量的声明语句都会被提升到代码头部,这就是变量提升. 原理:引擎在读取js代码的过程中,分为两步,专业来说代码运行是分为预处理 ...

  3. js 基础面试

    1.['1', '2', '3'].map(parseInt) let arr = ['1', '2', '3'] let res1 = arr.map(Number) // [ 1, 2, 3 ] ...

  4. JS基础-全方面掌握继承

    前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行, ...

  5. 前端面试题目汇总摘录(JS 基础篇)

    JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...

  6. 前端工程师面试问题归纳(一、问答类html/css/js基础)

    一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...

  7. 前端面试题目汇总摘录(JS 基础篇 —— 2018.11.02更新)

    温故而知新,保持空杯心态 JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string type ...

  8. 慕课网-前端JavaScrpt基础面试技巧-学习笔记

    章节目录: JS基础知识(上)--讲解 JS 基础语法相关的面试题,分析原理以及解答方法.这一章节讲解了基础知识的第一部分:变量的类型和计算.以及JS "三座大山" -- 原型.作 ...

  9. js基础:关于Boolean() 与 if

    最近面试比较多,但每次我问这个问题的时候,答出来的同学并不多 var a = 0; if( a) { alert(1); } 这个问题有部分人会答alert(1),   有些人会答不执行. 结果是不执 ...

随机推荐

  1. CodeForce-734C Anton and Making Potions(贪心+二分)

    CodeForce-734C Anton and Making Potions  C. Anton and Making Potions time limit per test 4 seconds m ...

  2. Linux系列(11) - PATH环境变量

    前言 在Liunx当中要想执行"执行脚本"."执行文件"或者"执行命令",需要用绝对路径:因此环境变量就出来了,将路径放到环境变量中,环境变 ...

  3. Java开发基础平台带集成的审批工作流

    前言 activiti工作流,企业erp.oa.hr.crm等审批系统轻松落地,请假审批demo从流程绘制到审批结束实例. 一.项目形式 springboot+vue+activiti集成了activ ...

  4. selenium下拉选择框处理

    HTML: (一)通过xpath层级标签定位 driver.find_element_by_xpath(".//*[@id='Resolution']/option[2]").cl ...

  5. python3中文乱码解决方法

    解决方法: 修改pycharm配置: File->Settings->Editor->File encodings 把Global encoding设置成GBK即可

  6. python爬虫与mysql,mongobd(1)(2)第一个视频python_pymysql 安装与使用类型,import解决 问题之模块引ru 就是解决你的问题

    import pymysql.cursors ''' 1.创建连接 2.创建游标 3.执行sql 5.接受结果 ''' # 1.连接 connection =pymysql.Connect( # 域名 ...

  7. 深入理解netty---从偶现宕机看netty流量控制

    一.业务背景 目前移动端的使用场景中会用到大量的消息推送,push消息可以帮助运营人员更高效地实现运营目标(比如给用户推送营销活动或者提醒APP新功能). 对于推送系统来说需要具备以下两个特性: 消息 ...

  8. C语言数组的创建和使用

    C语言数组的创建和使用 数组是一组相同类型元素的集合. 一维数组的创建及初始化 //创建int类型的数组 //直接创建:不对数组进行初始化 int arr1[10]; //最常用.好用的创建方式 in ...

  9. 数据库建表权限 CREATE command denied to user for table

    今天在表中用Navicat连接服务器上的mysql账号进行建表,报了个这样类似的错, CREATE command denied to user for table 是数据库权限设置的问题,所以无法进 ...

  10. 踩坑系列《十一》完美解决阿里云vod视频点播无法播放音频和视频点播控制台里的媒资库里面的视频无法播放

    刚开始项目部署的时候,音频还是正常播放,后面直接报了 获取m3u8文件失败(manifestLoadError) 的错误,原因是 我的域名 xxx.com 这个域名没有解析到点播提供的CNAME上,所 ...