1.装箱和拆箱:

装箱:把基本数据类型转化为对应的引用数据类型的操作;
  1. var num = 123 // num
  2. var objNum = new Num(123) // object
  3. console.log(typeof objNum) // null
拆箱:将引用类型对象转换为对应的值类型数据对象;
  1. valueOf()
  2. var objNum = new Number(132)
  3. console.log(typeod objNum.valueOf()) // 123 number
  1. js toPrimitive(input, type) input:传入的值 type:值类型
  2. 1.input 判断是不是原始类型的值 :是 直接返回
  3. 2.不是 input.valueOf() 是: 原始类型 ->直接返回
  4. 3.还不是:input.toString():string 原始类型 返回
  5. 4.报错
面试题:
  1. console.log([] + []) // '' + toPrimitive()
  2. console.log([].valueOf()) // []
  3. console.log([].toString()) // ''
  4. [] + [] = '' + '' = ''
  5. console.log([] + {}) // [Object Object] 或 0
  6. console.log([]) // ''
  7. console.log({}.valueOf()) // {}
  8. console.log({}.toString()) // [Object Object]

2.栈和堆:

什么是栈:计算机为原始类型开辟的一块内存空间string number ...
什么是堆:计算机为引用类型开辟的一块内存空间 object
  1. var a = 'Mooc'
  2. var b = a
  3. b = 'Mooc2'
  4. console.log(a, b) // Mooc Mooc2
  5. var c = {key: 1}
  6. var d = c
  7. d.key = 2
  8. console.log(c, d) // 2 2
  9. // ['Mooc', 'Mooc2']
  10. // c d ['x00000018', 'x000018'] -> { {key:2} }
  11. // c d x00000018 -> {key:2} {key:2}
3.js中sort()方法
  1. var arr = [1, 2, 3, 4, 5]; // 1, 2, 3, 4, 5
  2. console.log(arr.sort()) //1, 2, 3, 4, 5
  3. var arr2 = [3. 25, 15, 18, 9, 22];
  4. console.log(arr2.sort()) // 15, 18, 22, 25, 3, 9
  5. jssort
  6. 1.默认升序
  7. 2.将排序的元素转为字符串['3', '22'...];找对应字符串的Unicode码表
  8. 默认0-9-----先排第一位,排完第一位之后在排第二位
  9. // 15, 18, 22, 25, 3, 9
  10. var arr3 = [3. 25, 15, a, 18, 9, 22];
  11. console.log(arr3.sort()) // [15, 18, 22, 25, 3, 9, 'a']
  12. 解决:
  13. 1.定义一个比较器函数
  14. //送人头(callback)
  15. function(x,y){
  16. return x-y
  17. } // 小于0->x移到y前面 大于0->x移到y后面 等于0-> 不变
  18. var arr4 = [3. 25, 15, 18, 9, 22];
  19. arr4.sort(function(x,y){
  20. return x-y
  21. })//默认升序 arr4 [3, 9, 15, 18, 22, 25]
  22. arr4.sort(function(x,y){
  23. return y-x
  24. })//降序 arr4 [25, 22, 18, 15, 9, 3]
3.js中Date对象中的getMounth() 需要注意的:
  1. var now = new Date()
  2. console.log(now.getTime()) // 1608908483092 :1970 1 1 0 至今的一个毫秒数
  3. console.log(now.getDay()) // 5 本周的第几天 周一到周日 7天
  4. console.log(now.getDate()) // 25 号 本月的几号
  5. console.log(now.getMounth() + 1)// 11 0-11(需要加1)
  6. js 设计 仿照 java1.1 getMounth() 0-11=> 1-12 20多年jsjava修改了但是js没修改过来)
4.开发中编码和解码使用场景有哪些
  1. var url = 'https://www.baidu.com?key=hello&name=张三&num=123'
  2. // escape() unescape()
  3. console.log(escape(url)) // 除了ASCII(a-z, 0-9) . //https%3A//www.baidu.com%3Fkey%3Dhello%26name%3D%u5F20%u4E09%26num%3D123
  4. var es = escape(url)
  5. console.log(unescape(es)) // ASCII // https://www.baidu.com?key=hello&name=张三&num=123
  6. //encodeURI() decodeURL()
  7. console.log(encodeURI(url)) // https://www.baidu.com?key=hello&name=%E5%BC%A0%E4%B8%89&num=123
  8. var ec = encodeURI(url)
  9. console.log(decodeURI(ec)) // https://www.baidu.com?key=hello&name=张三&num=123
  10. //encodeURIComponent() decodeURIComponent()

JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)的更多相关文章

  1. c#的装箱和拆箱及值类型和引用类型

    装箱:它允许根据值类型创建一个对象,然后使用对这新对象的一个引用. int i = 5; object o = i; int j = (int)o; 装箱:运行时将在堆上创建一个包含值5的对象(它是一 ...

  2. 《Effective C#》之减少装箱和拆箱

    <Effective C#>之减少装箱和拆箱_天极网 http://dev.yesky.com/msdn/359/3486359.shtml <Effective C#>之减少 ...

  3. Java基础 【自动装箱和拆箱、面试题】

    JDK 1.5 (以后的版本)的新特性自动装箱和拆箱 1. 自动装箱:把基本类型转换为包装类类型 int a =10; Integer i = new Integer(a); Integer valu ...

  4. C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)

    前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...

  5. 基础系列(4)—— C#装箱和拆箱

    一 装箱和拆箱的概念 装箱是将值类型转换为引用类型 : 拆箱是将引用类型转换为值类型 : 值类型:包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.C ...

  6. [C#] 类型学习笔记一:CLR中的类型,装箱和拆箱

    在学习.NET的时候,因为一些疑问,让我打算把.NET的类型篇做一个总结.总结以三篇博文的形式呈现. 这篇博文,作为三篇博文的第一篇,主要探讨了.NET Framework中的基本类型,以及这些类型一 ...

  7. C#装箱与拆箱的研究

    在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类.那么,我想问的是它 ...

  8. 深入剖析Java中的装箱和拆箱

    深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...

  9. 转 C# 装箱和拆箱[整理]

    1.      装箱和拆箱是一个抽象的概念 2.      装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型       利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的 ...

随机推荐

  1. iOS开发之GIF转MP4

    前言 最近遇到需要将gif转化为mp4的问题,网上找的在线转换限制太多,索性就自己写了一个工具APP.文章末尾有开源代码和打包好的APP,如有需要请自行下载. 效果图 核心代码 来源 import I ...

  2. k8s之数据存储-配置存储

    ConfigMap configmap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的 创建configmap.yaml,内容如下 apiVersion: v1 kind: ConfigMap ...

  3. RabbitMQ和Elasticsearch的使用笔记

    Demo介绍 学习rabbitmq和elasticsearch后的小练习,主要功能点介绍: 1.elasticsearch实现搜索.条件查询和分页: 2.搜索周边酒店信息 3.酒店竞价排名: 4.后台 ...

  4. HTML5内嵌文本编辑器

    1.这个编辑器用的是KindEditor 先看下效果: 2.准备: a):从官网下载KindEditor--->http://kindeditor.net/down.php b):解压到桌面测试 ...

  5. MySQL指定ip和端口连接数据库,并修改数据库密码

    一.指定ip和端口连接数据库 命令 mysql -u root -h (ip) -P (端口)-p 假设ip是:127.0.0.1:端口是:13326,连接的命令: mysql -u root -h ...

  6. springboot分页插件的使用

    在springboot工程下的pom.xml中添加依赖 <!--分页 pagehelper --> <dependency> <groupId>com.github ...

  7. JAVA简单精确计算工具类

    1 public class ArithUtil { 2 3 // 默认除法运算精度 4 private static final int DEF_DIV_SCALE = 10; 5 6 privat ...

  8. JAVAWEB开发批量删除,SSM的几种情况

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 阿里云服务器上部署java项目(安装mysql)

    安装mysql步骤如下: 1.安装MySQL官方的yum repository: wget -i -c http://dev.mysql.com/get/mysql57-community-relea ...

  10. tensorflow models flags 初步使用

    参考官方仓库:https://github.com/tensorflow/models/tree/master/official/utils/flags 测试Demo代码如下: from absl i ...