JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱:
装箱:把基本数据类型转化为对应的引用数据类型的操作;
var num = 123 // num
var objNum = new Num(123) // object
console.log(typeof objNum) // null
拆箱:将引用类型对象转换为对应的值类型数据对象;
valueOf()
var objNum = new Number(132)
console.log(typeod objNum.valueOf()) // 123 number
js toPrimitive(input, type) input:传入的值 type:值类型
1.input 判断是不是原始类型的值 :是 直接返回
2.不是 : input.valueOf() 是: 原始类型 ->直接返回
3.还不是:input.toString():string 是 原始类型 返回
4.报错
面试题:
console.log([] + []) // '' + toPrimitive()
console.log([].valueOf()) // []
console.log([].toString()) // ''
[] + [] = '' + '' = ''
console.log([] + {}) // [Object Object] 或 0
console.log([]) // ''
console.log({}.valueOf()) // {}
console.log({}.toString()) // [Object Object]
2.栈和堆:
什么是栈:计算机为原始类型开辟的一块内存空间string number ...
什么是堆:计算机为引用类型开辟的一块内存空间 object
var a = 'Mooc'
var b = a
b = 'Mooc2'
console.log(a, b) // Mooc Mooc2
var c = {key: 1}
var d = c
d.key = 2
console.log(c, d) // 2 2
// ['Mooc', 'Mooc2']
// c d ['x00000018', 'x000018'] -> { {key:2} }
// c d x00000018 -> {key:2} {key:2}
3.js中sort()方法
var arr = [1, 2, 3, 4, 5]; // 1, 2, 3, 4, 5
console.log(arr.sort()) //1, 2, 3, 4, 5
var arr2 = [3. 25, 15, 18, 9, 22];
console.log(arr2.sort()) // 15, 18, 22, 25, 3, 9
js中sort:
1.默认升序
2.将排序的元素转为字符串['3', '22'...];找对应字符串的Unicode码表
默认0-9-----先排第一位,排完第一位之后在排第二位
// 15, 18, 22, 25, 3, 9
var arr3 = [3. 25, 15, a, 18, 9, 22];
console.log(arr3.sort()) // [15, 18, 22, 25, 3, 9, 'a']
解决:
1.定义一个比较器函数
//送人头(callback)
function(x,y){
return x-y
} // 小于0->x移到y前面 大于0->x移到y后面 等于0-> 不变
var arr4 = [3. 25, 15, 18, 9, 22];
arr4.sort(function(x,y){
return x-y
})//默认升序 arr4 [3, 9, 15, 18, 22, 25]
arr4.sort(function(x,y){
return y-x
})//降序 arr4 [25, 22, 18, 15, 9, 3]
3.js中Date对象中的getMounth() 需要注意的:
var now = new Date()
console.log(now.getTime()) // 1608908483092 :1970 1 1 0 至今的一个毫秒数
console.log(now.getDay()) // 5 本周的第几天 周一到周日 7天
console.log(now.getDate()) // 25 号 本月的几号
console.log(now.getMounth() + 1)// 11 0-11(需要加1)
js 设计 仿照 java1.1 getMounth() 0-11=> 1-12 20多年js(java修改了但是js没修改过来)
4.开发中编码和解码使用场景有哪些
var url = 'https://www.baidu.com?key=hello&name=张三&num=123'
// escape() unescape()
console.log(escape(url)) // 除了ASCII(a-z, 0-9) . //https%3A//www.baidu.com%3Fkey%3Dhello%26name%3D%u5F20%u4E09%26num%3D123
var es = escape(url)
console.log(unescape(es)) // ASCII // https://www.baidu.com?key=hello&name=张三&num=123
//encodeURI() decodeURL()
console.log(encodeURI(url)) // https://www.baidu.com?key=hello&name=%E5%BC%A0%E4%B8%89&num=123
var ec = encodeURI(url)
console.log(decodeURI(ec)) // https://www.baidu.com?key=hello&name=张三&num=123
//encodeURIComponent() decodeURIComponent()
JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)的更多相关文章
- c#的装箱和拆箱及值类型和引用类型
装箱:它允许根据值类型创建一个对象,然后使用对这新对象的一个引用. int i = 5; object o = i; int j = (int)o; 装箱:运行时将在堆上创建一个包含值5的对象(它是一 ...
- 《Effective C#》之减少装箱和拆箱
<Effective C#>之减少装箱和拆箱_天极网 http://dev.yesky.com/msdn/359/3486359.shtml <Effective C#>之减少 ...
- Java基础 【自动装箱和拆箱、面试题】
JDK 1.5 (以后的版本)的新特性自动装箱和拆箱 1. 自动装箱:把基本类型转换为包装类类型 int a =10; Integer i = new Integer(a); Integer valu ...
- C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)
前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...
- 基础系列(4)—— C#装箱和拆箱
一 装箱和拆箱的概念 装箱是将值类型转换为引用类型 : 拆箱是将引用类型转换为值类型 : 值类型:包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.C ...
- [C#] 类型学习笔记一:CLR中的类型,装箱和拆箱
在学习.NET的时候,因为一些疑问,让我打算把.NET的类型篇做一个总结.总结以三篇博文的形式呈现. 这篇博文,作为三篇博文的第一篇,主要探讨了.NET Framework中的基本类型,以及这些类型一 ...
- C#装箱与拆箱的研究
在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类.那么,我想问的是它 ...
- 深入剖析Java中的装箱和拆箱
深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...
- 转 C# 装箱和拆箱[整理]
1. 装箱和拆箱是一个抽象的概念 2. 装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的 ...
随机推荐
- Golang语言系列-15-数据库
数据库 MySQL 连接数据库 package main import ( "database/sql" "fmt" _ "github.com/go ...
- 9、改善深度神经网络之正则化、Dropout正则化
首先我们理解一下,什么叫做正则化? 目的角度:防止过拟合 简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差).我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好 ...
- STM32—ADC多通道采集电压
文章目录 ADC详解 程序说明 函数主体 引脚配置 ADC和DMA配置 主函数 ADC详解 前面的博客中详细介绍了STM32中ADC的相关信息,这篇博客是对ADC内容的一个总结提升,ADC的详细介绍: ...
- 5 秒克隆声音「GitHub 热点速览 v.21.34」
作者:HelloGitHub-小鱼干 本周特推的 2 个项目都很好用,Realtime-Voice-Clone-Chinese 能让你无需开启变声音,即可获得一个特定声音的语音.这个声音可以是你朋友的 ...
- C#设计模式---PipeLine
一.概述 顾名思义,管道模式就像一条管道把多个对象连接起来,整体看起来就像若干个阀门嵌套在管道中,而处理逻辑就放在阀门上,如下图,需要处理的对象进入管道后,分别经过阀门一.阀门二.阀门三.阀门四,每个 ...
- C# 计算文件的MD5
MD5的作用详见:https://baike.baidu.com/item/MD5/212708?fr=aladdin public static string GetFileMD5(string f ...
- Blazor+Dapr+K8s微服务之事件发布订阅
我们要实现的是:在blazorweb服务中发布一个事件,并传递事件参数,然后在serviceapi1服务中订阅该事件,接收到blazorweb服务中发布的事件和参数. 1 在blazo ...
- 有关Java动态数组的一个小问题
前言 问题描述 今天遇到一个关于集合的问题,觉得比较有趣,记录一下,这个问题是:定义一个用户类,至少包含姓名,年龄,生日,qq邮箱,初始化10个用户,利用String操作,提取qq到List集合中,姓 ...
- 剑指 Offer 31. 栈的压入、弹出序列
剑指 Offer 31. 栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某 ...
- NOIP模拟16:「Star Way To Heaven·God Knows·Loost My Music」
T1:Star Way To Heaven 基本思路: 最小生成树. 假如我们将上边界与下边界看作一个点,然后从上边界经过星星向下边界连边,会发现,他会形成一条线将整个矩形分为左右两个部分. ...