JavaScript 学习之路- JS 小测验

在学习 JS 的过程中,很多知识往往看一遍就过去了,然后自以为掌握了,其实再次碰到不一定能答得出来,看到一些有趣的东西还是要动手实践一下,而且时不时复习一下,非常有利于加深记忆。今天是五一,假日期间,好好休息玩耍,也别学什么新东西了,你可以看看以下这些问题以及相关知识点来看看自己掌握了多少,温故知新。

问题不多,耐心看完。最下方有答案,先别急着翻,自己先想想。

问题

  1. JS 格式化,用逗号分隔千分位数字
  2. 运行 [1, 2, 2].fill(3, 1, 3) 会输出什么
  3. ~~3.5 的结果是什么
  4. 如何判断一个数组的长度是奇数还是偶数
  5. JSON.parse 和 JSON.stringify 的作用
  6. typeof null为什么等于 "object",它的判断原理是什么
  7. 如何判断一个元素是否为数组
  8. <<>> 运算符
  9. function add(){} 和 var add = function(){} 解析时的区别
  10. 执行以下代码,输出是什么?为什么?
var arr=[1,2,3,4,5];
for(var i=0;i<arr.length;i++) {
    arr[i]=function(){
      alert(i)
    }
}
arr[3]();

参考答案

如有错误,请帮忙指正。

  1. JS 格式化,用逗号分隔千分位数字

两种方法,一种是使用 tolocaleString()

var a = 1999;
a.toLocaleString();     // "1,999"

另外一种是正则表达式

var re = /(?!^)(?=(\d{3})+$)/g;
var a = "12345678";
a.replace(re, ',');   // "12,345,678"
  1. 运行 [1, 2, 2].fill(3, 1, 3) 会输出什么? 答案是 [1,3,3]

fill 方法接受三个参数:num,start,end 。num 是你要填充的数字,start 是填充的起始位置,end 是终止位置。fill(3,1,3) 表示从索引 1 开始到索引 3 之间的元素填充为 3

  1. ~~3.5 的结果是什么?答案是 3

对于非数字,~~ 的结果为0,有个例外是 ~~ true 结果为 1
对于大于 0 的数,~~ 相当于是Math.floor
对于小于 0 的数,~~ 相当于是Math.ceil

  1. 如何判断一个数组的长度是奇数还是偶数?答案是len & 1,len 为数组长度,奇数结果为true

只要 “&&” 前面是false,无论 “&&” 后面是 true 还是 false,结果都将返 “&&” 前面的值;
只要 “||” 前面为 false,不管 “||” 后面是 true 还是 false,都返回 “||” 后面的值。

  1. JSON.parse 和 JSON.stringify 的作用?

JSON.parse 将一个 json 转化为 JavaScript Object string 类型
JSON.stringify 将一个 string 转化为 json 类型

  1. typeof null为什么等于 "object",它的判断原理是什么

js 底层存储变量采用二进制,会在变量的机器码的低位 1-3 位存储其类型信息
000:对象
010:浮点数
100:字符串
110:布尔
1:整数
null:全0
undefined:-2^30
所以 typeof null 为显示为 object 对象。

  1. 如何判断一个元素是否为数组?

假设待判断对象为 arr ,有四种方法,一是

Object.prototype.toString.call(arr) == '[object Array]'

或者是

arr instanceof Array

又或是

Array.isArray(arr)

第四种方法可以用

arr.__proto__.constructor == Array
  1. <<>> 运算符相关操作?

左移 << 将一个数的二进制表示向左移动 n 位,右边用0填充。
右移 >> 将一个数的二进制表示向右移 n 位,舍弃被移出的位。
简单点说,a >> n 相当于用 a 去除以 2 的 n 次方,所以 8 >> 1 结果为 4;
而 a << n 相当于用 a 去乘以 2 的 n 次方,所以 2 << 5 结果为 64

  1. function add() {} 和 var add = function (){} 解析时的区别

前者是执行前就会被解析(执行前就会读取函数名),而后者是执行过程中解析。所以 function add() {} 在执行里面的代码前就会读取函数名 add , 而 var add = function (){} 则是执行时逐步解析。

  1. 执行以下代码,输出是什么?为什么?
var arr=[1,2,3,4,5];
for(var i=0;i<arr.length;i++) {
    arr[i]=function(){
      alert(i)
    } 
}
arr[3]();

答案是输出 i 的值为 5 。这个是与闭包有关的经常看到的问题,不管运行函数时传入的 i 是什么,最终输出的都是 for 循环结束时的 i 的值,也就是数组的长度,因为匿名函数里的这句 alert(i) 执行的时候需要找到 i 变量,里面没有,那就只好去父级里找,而父级里的 i 在 for 循环,所以最终给到它的是循环的终止条件,也就是 i = 5 。

解决方法也很简单,要么把 for() 里面的 var 换成 let ,形成块级作用域;要么使用闭包,匿名函数里在返回一个匿名函数,并且传入 i 立刻执行。

(完)
谢谢您的阅读,记得点个赞和关注。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容