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. 1 // 使用中间变量
  2. 2 var a = 10, b = 20 , temp = 0
  3. 3 temp = a
  4. 4 a = b
  5. 5 b = temp
  6. 6
  7. 7 // 使用ES6结构赋值
  8. 8 [b,a] = [a,b]
  9. 9
  10. 10 // 直接交换
  11. 11 a = a + b
  12. 12 b = a - b
  13. 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. 1 var a = 10
  2. 2 // a++ = 10=> a = 11 => ++a => 12
  3. 3 var c = a++ + ++a // 10 + 12

12. 短路运算符(逻辑中断)

  1. 1 var a = 1
  2. 2 var b = 10
  3. 3 var c = a || b // c = 1 逻辑或一边为真就返回值
  4. 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

  1. var str = 'abc'
  2. 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 // 外循环控制轮数(被遍历属性长度-1)
  2. 2 // 内循环控制每轮的次数(被遍历属性长度-i-1)
  3. 3 // 这个无需推导,记住规律,实际很少开发用到
  4. 4 for(var i = 0; i < str.length - 1; i++){
  5. 5 for(var j = 0;i < str.length - i - 1; j++)
  6. 6 // TODO
  7. 7 }

20. break 和 continue

20.1 break结束所有循环,continue结束当前循环。(break理解为员工离职了,continue理解为员工请假了,但请假结束还得上班)

21. 数组的两种创建方式

  1. 1 var arr = [1,2,3,4,5] // 字面量
  2. 2 var arr = new Array(1,2,3,4,5) // 创建对象

22. 创建对象的三种方式

  1. 1 // 字面量
  2. 2 var obj = {
  3. 3 name:'roger',
  4. 4 age:0
  5. 5 }
  6. 6 // new
  7. 7 var obj = new Object();
  8. 8 obj.name = 'roger' // obj['name'] = 'roger'
  9. 9 obj.age = 0 // obj['age'] = 0
  10. 10 // 构造函数
  11. 11 function Person(name,age){
  12. 12 this.name = name
  13. 13 this.age = age
  14. 14 // 不需要return 返回结果
  15. 15 }

23. new的过程

  • 在内存中开辟一个空间创建空对象

  • this指向这个空对象

  • 执行构造函数里的代码夫给这个对象添加属性和方法

  • 返回这个对象

24. 构造函数和对象的区别

  • 构造函数时模板 是定义,泛指一大类,它会把对象的共有属性和方法抽象出来封装到函数中。

  • 对象是具体的一个实例

25. JS内置对象有哪些

25.1 Math、Date

26. 遍历数组或对象

  1. 1 for(var i = 0; i < arr.length; i++)
  2. 2 arr.forEach((item,index) => {})) // 书写简单一些,但是无法中途退出循环 return
  3. 3 for(var key in obj){
  4. 4 console.log(obj[key])
  5. 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. 1 function fn() {}
  2. 2 var fn = function(){}
  3. 3 Function fn('a','b','return a + b') // 了解即可

30. 预解析的理解

30.1 变量名字会提升(注意只适用于var声明的变量),函数会整体提升

31.作用域链的理解

  • 函数内部访问函数外部的变量的优先级,当存在函数嵌套关系时,遵循就近原则

  • 如果当前作用域的变量没用var声明 那么会从父级域中找。

32. 时间戳

  1. 1 var date = +new Date() // 距离1970年到现在的毫秒数
  2. 2 var date = Date.now()

33. Math对象的使用

34.判断变量是否是数组的两种方式

  1. arr.isArray()
    Object.prototype.toString.call(arr)

35.基本包装类型

  • string,number,boolean也可以像对象一样使用

  • 当我们把它们当成对象来使用的时候,会临时把它们包装成对象,得到结果之后,再把这个对象销毁

36.字符串不可变的应用

  • 不要频繁+=拼接字符串

  • 如果涉及到拼字符串的时候,思路先创建一个数组,push,最后统一join性能更高一点

37.数组去重的两种方法

  1. 1 // Es6
  2. 2 var arr = [11,11,11,22,22,33,33]
  3. 3 var newArr = [...new Set(rr)]
  4. 4
  5. 5 // indexOf 根据指定的元素返回对应的索引,如果不存在返回-1
  6. 6 var arr1 = []
  7. 7 arr.forEach(item => {
  8. 8 if(arr1.indexOf(item) == -1) return arr1.push(item) // 如果条件为假,说明数组种已经出现过了,则不添加
  9. 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. 学习PHP中的目录操作

    对于编程语言来说,文件和目录的操作是其最最基础的功能.就像我们日常中最常见的图片上传.文件上传之类的功能,都需要文件和目录操作的支持.今天我们先来简单地学习一下 PHP 中关于目录操作的一些类和函数. ...

  2. DS博客作业04--图

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...

  3. Docker系列(10)- 常用命令小结

    #橙色前面笔记已记录,黑色后面笔记将完善#勤加练习!!!attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像 build ...

  4. jmeter之图形结果

    jmeter监听器中的图形报表如何分析,反正第一次看到图时,不觉明厉害. 样本数目:是总共发送到服务器的请求数. 最新样本:是代表时间的数字,是服务器响应最后一个请求的时间. 吞吐量:是服务器每分钟处 ...

  5. markdown写作系统

    markdown 电脑本地使用typora,可保存为md文件直接上传到有道云笔记中 直接使用博客园做为图床,可以存为草稿,然后把复制连接 有道云笔记 粘贴博客园的图片连接

  6. whistle手机抓包(以安卓手机为例)

    环境:whistle:1.14.6 whistle手机抓包 以安卓手机为例 手机跟电脑要连同一个wifi. 1.启动whistle 使用w2 start启动whistle. 退出cmd后,whistl ...

  7. [转载]Samba 4实现windows匿名访问Linux共享!

    SMB(Server Messages Block,信息服务块). 由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows ...

  8. 最小化安装centos7心得

    在虚拟机里最小化安装了centos7,只有字符界面,发现网卡不通,解决方法: 调整网卡配置文件: cd /etc/sysconfig/network-scripts/ 有两个ifcfg文件,一个ifc ...

  9. 解除你学习Python自动化测试框架的所有疑惑,开启学习直通车

    学习框架第一步 前言 很多同学学完Python基础后出现迷茫......有同感的小伙伴,点赞关注........ 学习完Python还要学习什么? 什么是自动化测试框架? 如何搭建自动化测试框架? 甚 ...

  10. 测试工程需要明白的Monkey测试

    App稳定性测试 稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务. 指标: 异常的次数 异常的频率 App的稳定性测试如何实施? 首选Monkey Monkey是 ...