javascript面试题(二)
24.
function foo() { }
var oldName = foo.name;
foo.name = "bar";
[oldName, foo.name]
// [foo,foo]
函数实例会有一个内置的name属性,这个函数使只读的不可修改,所以两个都是foo
25.
var ary = Array(3);
ary[0]=2;
ary.map(function(elem) {
return '1';
}); // logs [1, , ]
设置一个空数组var ary = [ , , , ],然后更改ary里的索引为0 的数为2,则为ary = [2, , ],然后用数组方法map循环数组,返回1,map循环时只会循环有数据的内容,所以只会把2改为1,当后面为空时,map不会继续执行.
26
[1 < 2 < 3, 3 < 2 < 1] //logs[true,true]
true 1; false -1
数据运算会按顺序运算,1<2<3,运算时,先比比较1<2,然后返回true,true和3比较,true转换为数组类型,为1,1<3所以为true
3<2<1,先比较3<2,返回false,然后false和1比较,会转换为数据类型,false转化为-1,-1<1所以返回true
27.
var a = 111111111111111110000,
b = 1111;
a + b;
//
111111111111111110000;
js中数值的取值范围为-2^53-2^53,a的范围已经超过了2^53,超过最大值,和其他数做加减法,都为这个最大值
28
var val = 'c';
var str = 'Value is' + (val === 'c') ? 'a':'b';
console.log(str); // a;
这道题考得是运算的先后顺序,先运算 val === "c",返回true,然后 + 的运算符大于其他运算符,,即最后的结果Value is true? 'a' : 'b';,布尔值为true,所以返回a
29.
var a = /123/, b = /123/;
console.log(a == b); //false
console.log(a === b); //false
/123/是一个正则表达式,所以比较的是两个的引用地址,a和b显然不同,所以返回false
第二个 === 全等比较,与第一个相似,所以说地址不同返回仍为false
30
var lowerCase = /^[a-z]+$/;
[lowerCase.test(null), lowerCase.test()] //logs [true , true ]
lowerCase.text(null)的内容为null,null转为字符串"null",以n开头,符合正则表达式,所以为true
lowerCase.text()的内容为undefined,转为字符串"undefined",以u开头,符合正则表达式,所以为true
31
[typeof null, null instanceof Object] //logs [object , false ]
typeof会返回简单的数据类型,null会返回object
instanceof是基于原型链的比较,null并不是object原型上创建出来的,null._propto_最终指向null,所以会返回false
32
var ary = [0,1,2];
ary[10] = 10;
ary.filter(function(x) {
return x === undefined;
}); //logs []
filter的意思是过滤掉通过函数的元素,然后返回未通过的数据,这道题,ary = [0,1,3];然后添加了ary[10] = 10;添加后的数组变为了ary = [0,1,2,empty*7,10],过滤条件为x=undefined,所以会把数组全部过滤掉,剩下的只有空数组,所以结果为[];
33
var ary = Array(3);
ary[0] = 2;
ary.map(function(elem) {
return '1';
}); // logs [1, , ]
这题考的是map,创建一数组,ary= [ , , ];然后给ary[0] = 2,数组变为ary= [2 , , ],map循环时,只会循环有索引且赋值的数据,而且会按原来的顺序依次进行,当循环完ary[0]后不会继续循环,所以返回的数据为ary =[1,empty*2]
34
function effect(ary) {
    ary[0] = ary[2];
}
function run(a,b,c) {
    c = 10;
    effect(arguments);
    return a + b + c;
}
run(1,1,1);
//logs [21]
在非严格模式下,arguments的值会跟踪参数的值,无论修改arguments[i]本身还是修改的响应的参数本身,两个值都会同步,所以当调用run时,数组为ary= [1,1,10];当执行到effect时,把ary[2]的值赋值给ary[0],
即数组变为ary = [10,1,10]相加为10+10+1=21;但是在严格模式下arguments参数的值不会跟踪参数的值,ary = [1,1,10].最后的结果为1+1+10=12
35
var min = Math.min();
var max = Math.max();
min < max // logs false
Math.min()如果传入数组就会返回数组中的最小值;
Math.max()如果传入数组就会返回数组的最大值;
但是如果比较非数字时会自动转化toString或value of方法为字符串后比较,如果不传数组的话,Math.min()会出现infinite(无穷大),Math,max()会出现(-infinite)即无穷小,所以Math.min()>Math.max();
36
function foo(a) {
    var a;
    return a;
}
function bar(a) {
    var a = 'bye';
    return a;
}
[foo('hello'), bar('hello')]
// logs  [hellow, bye ]
函数提升,会转化成如下效果
function foo (a)  {
          return a;
}
function bar(a) {
           a  =  'bye';
           return  a;
}
[foo('hellow'),bar('hellow')]
var申明提升,所以var a = undefined;参数会赋值给a,bar()时,修改了a的值所以为'bye',所以最后返回 ['hellow','bye']
37
function f() {}
var a = f.prototype;
var b = Object.getPrototypeOf(f);
a === b
// logs  false
函数的原型与它的prototype无关,所以互不相等
javascript面试题(二)的更多相关文章
- 你应该知道的25道Javascript面试题
		
题目来自 25 Essential JavaScript Interview Questions.闲来无事,正好切一下. 一 What is a potential pitfall with usin ...
 - 互联网中级Javascript面试题
		
互联网中级Javascript面试题 1.实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制 ...
 - 互联网公司前端初级Javascript面试题
		
互联网公司前端初级Javascript面试题 1.JavaScript是一门什么样的语言,它有哪些特点?(简述javascript语言的特点)JavaScript是一种基于对象(Object)和事件驱 ...
 - 人人网javascript面试题
		
JavaScript面试题要求:以下题目必须从一至四题中,选出三道题,使用原生代码实现,不可使用任何框架,第五题为选作题. 一. 在页面的固定区域内实现图片的展示 <ignore_ ...
 - 174道 JavaScript 面试题,助你查漏补缺
		
最近在整理 JavaScript 的时候发现遇到了很多面试中常见的面试题,本部分主要是作者在 Github 等各大论坛收录的 JavaScript 相关知识和一些相关面试题时所做的笔记,分享这份总结给 ...
 - JavaScript 入门教程二 在HTML中使用 JavaScript
		
一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...
 - 一道 JavaScript 面试题
		
有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...
 - JavaScript基础笔记二
		
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
 - JavaScript基本概念(二)
		
JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...
 
随机推荐
- 入门python有什么好的书籍推荐?纯干货推荐,你值得一看  python基础,爬虫,数据分析
			
Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...
 - GitHub上最火的SpringCloud微服务商城系统项目,附全套教程
			
项目介绍 mall-swarm是一套微服务商城系统,采用了 Spring Cloud Greenwich.Spring Boot 2.MyBatis.Docker.Elasticsearch等核心技术 ...
 - JavaScript学习系列博客_12_JavaScript中的break、continue关键字
			
break关键字 -break关键字可以用来退出switch或循环语句 -不能在if语句中使用break和continue,但不是说if语句里面不能写break关键字,break关键字一定要包含在sw ...
 - SparkStreaming架构
			
SparkStreaming是一个对实时数据流进行高通量.容错处理的流式处理系统,可以对多种数据源(如Kdfka.Flume.Twitter.Zero和TCP 套接字)进行类似Map.Reduce和J ...
 - centos7.8 安装部署 k8s 集群
			
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
 - Golang omitempty 的用法
			
原文链接:https://blog.csdn.net/skh2015java/article/details/90720692omitempty作用是在json数据结构转换时,当该字段的值为该字段类型 ...
 - 对于CSS里面我之前不太清楚的伪类,我做一些总结
			
格式: 标签 + : + 参数 +{ 可填背景颜色,字体颜色,鼠标样式,加粗等 } a:hover{ color:#f40;} :link表示鼠标点击之前的样式 :hover表示鼠标放上去的样式 :a ...
 - 操作系统-I/O(2)设备的分配
			
作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行 设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作 ...
 - 如何使用python移除/删除非空文件夹?
			
移除/删除非空文件夹/目录的最有效方法是什么? 1.标准库参考:shutil.rmtree. 根据设计,rmtree在包含只读文件的文件夹树上失败.如果要删除文件夹,不管它是否包含只读文件,请使用 i ...
 - shell 三剑客之 sed
			
sed 在shell 编程里也很常用,功能强大! 同grep一样,sed提供两种方式: 方式一:stdout | sed [option] "pattern command" 从文 ...