1.看程序
相当于 b=3;var a=b; b其实为全局变量
(function(){
var a = b = 3;
})();
console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));
2.(function($) { /* jQuery plugin code referencing $ */ } )(jQuery); 这个作用是:1.命名空间,�不污染全局;2.可以简写变量
3.使用'use strict'的理由:在运行时自动对JavaScript代码实施更严格的
解析和错误处理
的方法。否则将被忽略或将以静默方式失败的代码错误现在将生成错误或抛出异常
。
4.0.1+0.2 = 0.3+(15个0)+4;
5.写一个函数isInteger() ES6中 Object.isInteger();
function isInteger(x) {
return Math.round(x) === x;
}
function isInteger(x) {
return (x ^ 0) === x;
}
6.验证一个字符串是否是回文
function isPalindrome(str) {
str = str.replace(/\W/g, '').toLowerCase();
return (str == str.split('').reverse().join(''));
}
7.在没有用setTimeout进行递归时,
当数组过大,不断进行递归调用,主线程的任务数量会不断叠加,当达到一定大小就会造成堆栈溢出,
而当递归函数放到setTimeout进行异步执行,此时相当于开了另外一个延时线程
,主线程就负责调用setTimeout这个异步线程执行任务
就可以,一执行完成就释放,就不会造成堆栈溢出。参考
var list = readHugeList();
var nextListItem = function() {
var item = list.pop();
if (item) {
// process the list item...
setTimeout( nextListItem, 0);
}
};
8.程序题目 "[object Object]" key值会Stringify,�即:String(b)
var a={},
b={key:'b'},
c={key:'c'};
a[b]=123;
a[c]=456;
console.log(a[b]);
9.this指向问题
var hero = {
_name: 'John Doe',
getSecretIdentity: function (){
return this._name;
}
};
var stoleSecretIdentity = hero.getSecretIdentity;
console.log(stoleSecretIdentity());
console.log(hero.getSecretIdentity());
function convert(str){
str.split('-')
}