3.1.1、介绍js的基本数据类型
Undefined、Null、Boolean、Number、String、Symbol(new in ECMAScript 2015)
3.1.2、介绍js有哪些内置对象?
Object是 JavaScript 中所有对象的父对象
数据封装类对象:Object、Array、Boolean、Number 和 String
其他对象:Function、Arguments、Math、Date、RegExp、Error
3.1.3、说几条写JavaScript的基本规范?
1.不要在同一行声明多个变量。
2.请使用 ===/!==来比较true/false或者数值
3.使用对象字面量替代new Array这种形式
4.不要使用全局函数。
5.Switch语句必须带有default分支
6.函数不应该有时候有返回值,有时候没有返回值。
7.For循环必须使用大括号
8.If语句必须使用大括号
9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。
3.1.4、JavaScript有几种类型的值?,你能画一下他们的内存图吗
栈:原始数据类型(Undefined,Null,Boolean,Number、String)
堆:引用数据类型(对象、数组和函数)
两种类型的区别是:存储位置不同;
原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储;
引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体
3.1.5、null,undefined 的区别?
null表示一个对象被定义了,值为“空值”;
undefined表示不存在这个值。
typeof undefined //"undefined"
undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,但是还没有定义。当尝试读取时会返回 undefined;例如变量被声明了,但没有赋值时,就等于undefined
typeof null //"object"
null :是一个对象(空对象, 没有任何属性和方法);
例如作为函数的参数,表示该函数的参数不是对象;
注意:
在验证null时,一定要使用 === ,因为 == 无法分别 null 和 undefined
参考http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html
3.1.6、javascript代码中的"use strict";是什么意思 ? 使用它区别是什么?
use strict是一种ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行,使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值;
全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用;消除代码运行的一些不安全之处,保证代码运行的安全,限制函数中的arguments修改,严格模式下的eval函数的行为和非严格模式的也不相同;
提高编译器效率,增加运行速度;
为未来新版本的Javascript标准化做铺垫。
3.1.7、如何判断一个对象是否属于某个类?
使用instanceof(待完善)
if(a instanceof Person){
alert('yes');
}
3.1.8、new操作符具体干了什么呢?
1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。
2、属性和方法被加入到 this 引用的对象中。
3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。
var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
3.1.9、用原生JavaScript的实现过什么功能吗?
原生JavaScript常用的正则表达式
原生JavaScript实现字符串长度截取
原生JavaScript获取域名主机
原生JavaScript清除空格
原生JavaScript替换全部
原生JavaScript转义html标签
原生JavaScript还原html标签
原生JavaScript时间日期格式转换
原生JavaScript判断是否为数字类型
原生JavaScript设置cookie值
原生JavaScript获取cookie值
原生JavaScript加入收藏夹
原生JavaScript设为首页
原生JavaScript判断IE6
原生JavaScript加载样式文件
原生JavaScript返回脚本内容
原生JavaScript清除脚本内容
原生JavaScript动态加载脚本文件
原生JavaScript返回按ID检索的元素对象
原生JavaScript返回浏览器版本内容
原生JavaScript元素显示的通用方法
3.1.10、documen.write和 innerHTML的区别
document.write只能重绘整个页面
innerHTML可以重绘页面的一部分
3.1.11、数组和对象有哪些原生方法,列举一下?
数组:join():将数组元素按指定的分隔符拼接成一字符串返回,默认分隔符为英文逗号
sort(fn):数组排序,默认是按英文字母的ASC码升序排列,比如apple排在orange前面
pop():删除数组的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。
push(n1,n2,n3,....nx):向数组末尾添加一个或多个元素,并返回添加后数组的长度
reverse():颠倒数组中元素的顺序
shift():删除数组的第一个元素,并返回它删除的那个元素
slice(start,end):用于截取start和end之间的数组元素并存入新数组返回
unshift(element1,.....,element):向数组开头添加一个或多个元素,并返回添加后的数组长度。至少要传一个参数。
3.1.12、用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
function commafy(num) {
num = num + '';
var reg = /(-?d+)(d{3})/;
if(reg.test(num)){
num = num.replace(reg, '$1,$2');
}
return num;
}
3.1.13、如何测试前端代码么?知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
3.1.14、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
Handlebars是一款很高效的模版引擎,提供语意化的模版语句,最大的兼容Mustache模版引擎, 提供最大的Mustache模版引擎兼容, 无需学习新语法即可使用;
3.1.15、简述一下Handlebars的基本用法?
Js语义模板库首先type设置为 type="text/x-handlebars-template
使用Handlebars.compile()方法来预编译模板
#表示blocks’
3.1.16、简述一下Handlerbars的对模板的基本处理流程, 如何编译的?如何缓存的?
略
3.1.17、Object.is()与原来的比较操作符“ ===”、“ ==”的区别?
两等号判等,会在比较时进行类型转换;
三等号判等(判断严格),比较时不进行隐式类型转换,(类型不同则会返回false);
Object.is在三等号判等的基础上特别处理了 NaN 、-0 和 +0 ,保证 -0 和 +0 不再相同,但 Object.is(NaN, NaN) 会返回 true.Object.is 应被认为有其特殊的用途,而不能用它认为它比其它的相等对比更宽松或严格。
3.1.18、请指出JavaScript宿主对象 (host objects) 和原生对象 (native objects) 的区别?
一、原生对象
ECMA-262把原生对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服务器方面)、Enumerator(集合遍历类)、RegExp(正则表达式)
由此可以看出,简单来说,原生对象就是ECMA-262定义的类(引用类型)。
二、宿主对象
何为“宿主对象”?ECMAScript中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”。所有非原生对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。
所有的BOM和 DOM 对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。TML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML)。
HTML DOM定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法。
通过DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
3.1.19、例举3种强制类型转换和2种隐式类型转换?
强制(parseInt,parseFloat,number)隐式(== – ===);
QQ技术交流群:815302226
网友评论