1、什么是NaN?它的类型是什么?如何可靠地测试一个值是否等于NaN?
NaN属性表示“不是数字”的值。这个特殊值是由于一个操作数是非数字的(例如“abc”/ 4)或者因为操作的结果是非数字而无法执行的。
虽然这看起来很简单,但NaN有一些令人惊讶的特征,如果人们没有意识到这些特征,就会导致bug。
虽然NaN的意思是“不是数字”,但它的类型是,数字:
使用isNaN()也不是一个好的解决方案,ES6提供了一个新的Number.isNaN()函数 。
2:什么是JavaScript中的“闭包”?举一个例子。
闭包是一个内部函数,它可以访问外部(封闭)函数的作用域链中的变量。闭包可以访问三个范围内的变量;具体来说:(1)变量在其自己的范围内,(2)封闭函数范围内的变量,以及(3)全局变量。
这里是一个例子:
var globalVar = "xyz"; (function outerFunc(outerArg) { var outerVar = 'a'; (function innerFunc(innerArg) { var innerVar = 'b'; console.log( "outerArg = " + outerArg + "\n" + "innerArg = " + innerArg + "\n" + "outerVar = " + outerVar + "\n" + "innerVar = " + innerVar + "\n" + "globalVar = " + globalVar); })(456); })(123);
在上面的例子中,innerFunc,outerFunc和全局名称空间的变量都在innerFunc的范围内。上面的代码将产生以下输出:
outerArg = 123 innerArg = 456 outerVar = a innerVar = b globalVar = xyz
3、如何在数组的开头添加元素?最后如何添加一个?
var myArray = ['a', 'b', 'c', 'd']; myArray.push('end'); myArray.unshift('start'); console.log(myArray); // ["start", "a", "b", "c", "d", "end"]
4:检测一个变量是一个String类型
typeof(obj)
5、什么是盒子模型?
在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个部分。这四个部分占有的空间中,有的部分可以显示相应的内容,而有的部分只用来分隔相邻的区域或区域。4个部分一起构成了css中元素的盒模型。
6、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
行内元素:a、b、span、img、input、strong、select、label、em、button、textarea 块级元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote 空元素:即系没有内容的HTML元素,例如:br、meta、hr、link、input、img
7、请说出三种减低页面加载时间的方法
压缩css、js文件合并js、css文件,减少http请求 外部js、css文件 放在最底下 减少dom操作,尽可能用变量替代不必要的dom操作
8:Javascript中的定时器有哪些?他们的区别及用法是什么?
setTimeout 只执行一次 setInterval 会一直重复执行
9:什么是mvvm mvc是什么区别 原理
一、MVC(Model-View-Controller) MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理)->Model(数据持久化)->View(将结果反馈给View)。 MVC使用非常广泛,比如JavaEE中的SSH框架
10:关于JS事件冒泡与JS事件代理(事件委托)
1.事件冒泡: 通俗易懂的来讲,就是当一个子元素的事件被触发的时候(如onclick事件),该事件会从事件源(被点击的子元素)开始逐级向上传播,触发父级元素的点击事件。 2.事件委托 事件委托,首先按字面的意思就能看你出来,是将事件交由别人来执行,再联想到上面讲的事件冒泡,是不是想到了?对,就是将子元素的事件通过冒泡的形式交由父元素来执行。下面经过详细的例子来说明事件委托:
本文暂时没有评论,来添加一个吧(●'◡'●)