解析:
null 是一个表示”无”的对象,转为数值时为 0;undefined 是一个表示”无”的原始值,
转为数值时为 NaN。
null 表示”没有对象”,即该处不应该有值
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
undefined 表示”缺少值”,就是此处应该有一个值,但是还没有定义
(1)变量被声明了,但没有赋值时,就等于 undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于 undefined。
(3)对象没有赋值的属性,该属性的值为 undefined。
(4)函数没有返回值时,默认返回 undefined。
解析:
闭包就是能够读取其他函数内部变量的函数
由于在 Javascript 语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包
简单理解成”定义在一个函数内部的函数”。
所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包的用途:
闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的
变量,另一个就是让这些变量的值始终保持在内存中
重用变量又不能造成全局污染
js 代码中”use strict”是什么意思?使用它区别是什么?
解析:
进入”严格模式”的标志,老版本的浏览器会把它当作一行普通字符串,加以忽略
将”use strict”放在脚本文件的第一行,则整个脚本都将以”严格模式”运行。如果这
行语句不在第一行,则无效,整个脚本以”正常模式”运行。如果不同模式的代码文件合并
成一个文件,这一点需要特别注意。
(严格地说,只要前面不是产生实际运行结果的语句,”use strict”可以不在第一行,比
如直接跟在一个空的分号后面。)
将”use strict”放在函数体的第一行,则整个函数以”严格模式”运行
因为第一种调用方法不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚
本文件放在一个立即执行的匿名函数之中
– 消除 Javascript 语法的一些不合理、不严谨之处,减少一些怪异行为;
– 消除代码运行的一些不安全之处,保证代码运行的安全;
– 提高编译器效率,增加运行速度;
– 为未来新版本的 Javascript 做好铺垫。
js 中有一个函数,执行对象查找时,永远不会去查找原型,这个函数是什么?
解析:
hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。
如果有,返回 true,否则返回 false。该方法属于 Object 对象,由于所有的对象都”继承”
了 Object 的对象实例,因此几乎所有的实例对象都可以使用该方法。
解析:
js 的延迟加载有助与提高页面的加载速度,以下是延迟加载的几种方法:
使用 setTimeout 延迟方法的加载时间
延迟加载 js 代码,给网页加载留出更多时间
<script type=”text/javascript” >
function A(){
$.post(“/lord/login”,{name:username,pwd:password},function(){
alert(“Hello”);
});
}
$(function (){
setTimeout(‘A()’, 1000); //延迟 1 秒
})
</script>
让 js 最后加载
例如引入外部 js 脚本文件时,如果放入 html 的 head 中,则页面加载前该 js 脚本就会被加载
入页面,而放入 body 中,则会按照页面从上倒下的加载顺序来运行 JavaScript 的代码~~~ 所
以我们可以把 js 外部引入的文件放到页面底部,来让 js 最后引入,从而加快页面加载速度
上述方法 2 也会偶尔让你收到 Google 页面速度测试工具的”延迟加载 javascript”警告。所
以这里的解决方案将是来自 Google 帮助页面的推荐方案。
//这些代码应被放置在</body>标签前(接近 HTML 文件底部)
<script type=”text/javascript”>
function downloadJSAtOnload() {
var element = document.createElement(“script”);
element.src = “defer.js”;
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener(“load”, downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent(“onload”, downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
这段代码意思是等到整个文档加载完后,再加载外部文件”defer.js”。
使用此段代码的步骤:
复制上面代码
粘贴代码到 HTML 的标签前 (靠近 HTML 文件底部)
修改”defer.js”为你的外部 JS 文件名
确保你文件路径是正确的。例如:如果你仅输入”defer.js”,那么”defer.js”文件一定与 HTML
文件在同一文件夹下。
注意:这段代码直到文档加载完才会加载指定的外部 js 文件。因此,不应该把那些页面正
常加载需要依赖的 javascript 代码放在这里。而应该将 JavaScript 代码分成两组。一组是因页
面需要而立即加载的 javascript 代码,另外一组是在页面加载后进行操作的 javascript 代码(例
如添加 click 事件或其他东西)。这些需等到页面加载后再执行的 JavaScript 代码,应放在一
个外部文件,然后再引进来。