- typeof 只返回 string number object 还有 undefined function ,number 就包含了float;
- var test='4399'-0;变量test中存储的数字类型4399(js解释器会将字符串'4399'调用Number()转换为4399,再去计算), typeof tset 返回 'number', 'number' == 'number',返回 true;
-
var i=0;
function a(){
// console.log(i++);//0
console.log(++i);//1
}
a();
-
理解闭包,举例子:
function Foo() {
var i = 0;
return function() {
//匿名函数;这个函数的i是引用的是外部的i,构成了闭包函数。
console.log(i++);//函数内部可以读取函数外部的变量;
//闭包函数简单点说就是可以读取其他函数外部的变量;
}
}
var f1 = Foo(),//0
f2 = Foo();
f1();//0
f1();//1
f2();//0
console.log("-----------------------------")
function test(){
var a= 1;
return function(){
a++;
console.log(a);//2
// console.log(a++);//1 假如直接将自增放进来;
}
};
var f1=test();//2
f1();//2
f1();//3
- sessionStorage 、localStorage 和 cookie 之间的区别 共同点:都是保存在浏览器端,且同源的。 区别: 1:cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。 2:存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。 3:数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。 4:作用域不同,sessionStorage不在不同的浏览器窗口敏感词享,即使是同一个页面;localStorage在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。 5:Web Storage支持事件通知机制,可以将数据更新的通知发送给监听者。 6:Web Storage 的 api 接口使用更方便。
-
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制
-
js运作在浏览器中,是单线程的,js代码始终在一个线程上执行,此线程被称为js引擎线程;ps:web worker也只是允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)
-
js函数调用时加括号和不加括号的区别.不加括号相当于把函数代码赋给等号左边,加括号是把函数返回值赋给等号左边;
js中this的用法,this总是指向调用它的对象,倒数第二行的getColor为windows调用的,倒数第一行的getColor是test对象调用的
var color='gree';
var test={
color:"blue",
getColor:function(){
var color="red";
console.log(this.color);//this指向的是window
}
}
var getColor=test.getColor;
getColor();
test.getColor();
-
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
注释:该方法会改变原始数组。
-
eval:返回字符串表达式中的值
unEscape:返回字符串ASCI码
escape:返回字符的编码
parseFloat:返回实数
-
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用来表示一个本来要返回数值的操作数未返回数值的情况;例如字符串“10”或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。
-
if(condition)的condition求值结果若非布尔值,ECMAScript会自动调用Boolean()转换函数将结果转换为布尔值。转换规则为
var a="undefined";//非空字符
//var a=undefined;//false
var b="false";
//var b=false;//false
var c="";//空字符
function assert(aVar){
if(aVar)
console.log(true);
else
console.log(false);
}
assert(a);
assert(b);
assert(c);
- javaScript没有函数重载;
var m= 1, j = k = 0;
function add(n) {
return n = n+1;
}
y = add(m);
console.log(y);
//JavaScript没有函数重载的情况,如果有两个函数同名,那么后一个命名的
//覆盖第一个同名的函数,所以此时输出的全部是4;
function add(n) {
return n = n + 3;
}
z = add(m);
console.log(z);
-
console.log(void ());出错,不符合
-
console.log(void 0); // undefined
console.log(void(0)); // undefined