对于学前端的同学而言,JavaScript 是大家的主要开发语言,本身语法比较简单,而且生态系统也比较完善,影响力也越来越大。
在我们使用的过程中,经常会遇到各种奇怪的问题,有时候会让我们摸不着头脑。
实际上遇到问题是常态,学姐根据同学们私信我提到的问题去查找了许多相关资料,把这些同学们意想不到的JavaScript问题及解决办法整理出来给大家!
函数f2执行后为什么返回了undefined?
我们第一眼感觉应该是返回 { },可是却返回了 undefined,这本质原因是因为箭头函数返回的 { } 是箭头函数语法的一部分,我们写一个测试用例就能看出来:
因此上面 f2 函数返回的是 undefined,当然,如果需要返回一个 { } 对象也是可以的,只需要使用括号将返回值包裹起来:
2、JavaScript 中也有标签?
下面这种写法会有问题吗?
答案是没问题,会返回 Hello 的字符串。因为 foo 被识别为一个标签,然后执行后面 console.log(“Hello”),然后执行 break foo中断执行。
我们经常会使用带标签的语句和 break/continue 语句一起使用,从而实现结束或继续循环:
3、 [ ]和null都是对象
下面 3 行代码返回结果是什么?
返回结果是这样的:
typeof 操作符返回一个字符串,且必须符合 Table 37: typeof 操作符 返回值。对于没有实现 [ [Call] ] 的 null、普通对象、标准特异对象和非标准特异对象,它返回字符串 ‘object’。
但是,你可以使用 toString 方法检查对象的类型。
4、还能使用反引号执行函数?
调用函数除了下面的方式,还有其他方式吗?
当然还有啦,我们可以使用反引号调用:
这个看着很神奇的样子,但是实际上用的是模版字符串。这是一种高级形式的模版字符串,是带标签的模版字符串。
上面示例代码中:f 函数是模版字面量的标签,标签可以用函数解析模板字符串。标签函数的第一个参数包含一个字符串值的数组。其余的参数与表达式相关。
5、获取两个日期的差
从结束日期中减去开始日期,以获得以秒为单位的差异。然后将差值除以一天中的秒数,得到天数差值。
6、找出两个数组之间的差异
此解决方案从一个数组创建一个集合,然后使用Array 筛选器方法将其与另一个数组进行比较。此处使用Set 是一种优化,在处理较大的阵列时效率更高。
7、将数组转换为CSV
Array map方法用于遍历数组的每个级别,并使用定义的分隔符联接每个值。
8、计算数组中某项出现问题
Array reduce方法用于循环遍历数组,并在每次目标值与当前值匹配时递增累加器值。
9、字符串首字母大写
该字符串被强制转换为数组并进行解构。数组中的第一个元素是第一个字母,toUpperCase方法用于将其转换为大写,而数组的其余部分则作为字符串连接。
10、检查字符串是否为有效的JSON
JSON 解析方法用于将字符串解析为JSON,如果它无效,将引发错误。try-catch语句用于捕获此错误并返回false或者返回true。
写到最后
前端问题千千万,搞定JavaScript有机会超越别人一大半。以上就是学姐和大家分享的10个JavaScript中比较常见的问题,整理这些的主要原因是希望同学们能从中找到一些有价值的东西,也许还可以运用到你未来的代码库中。
假如同学们遇到这些问题,除了以上方法,大家会如何去解决呢?或者你有什么新想法想分享给大家,评论区告诉学姐!
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:11082411