1、42.toFixed(2)
- SyntaxError
- “.”在数字字符中的优先级高于在属性字符,相当于(42.)toFixed(2)
2、42..toFixed(2)
- “42.00”
- 相当于(42.).toFixed(2)
3、42 .toFixed(2)
- “42.00”
- 相当于(42).toFixed(2)
4、'1 ,2,3'.split(",")[0]==1
- true
- 字符串类型数字与number类型比较
- 类型转换
5、typeof null === object
- ReferenceError: object is not defined
- typeof 返回值是字符串类型
typeof null === “object”
//true
6、
var a = 1/"a";
typeof a==="number";
- NaN、true
- 不是数字的数字仍是数字类型
7、
"number" === "number";
var a = 1/"a"; //NaN
a ==NaN;
a === NaN;
isNaN(a);
NaN != NaN;
- true、false 、false 、true 、true
8、
isNaN("a");
Number.isNaN("a");
- ture 、false
- A bug
9、
var a = 2;
var b = a;
b = b+1;
console.log(a,b);
var c = [1,2,3];
var d = c;
c.push(4);
console.log(c,d);
- 2、3、[1,2,3,4]、[1,2,3,4]
- value-copy、reference-copy
10、
var date = new Date();
typeof date;
var date1 = Date();
typeof date1;
- object、string
11、
<script>
var a = 0;
var b = 0;
var foo = ()=>
{
for(let i=0;i<5;i++)
{
a+=1;
if(i===3)
{
break;
}
}
a+=1;
}
var bar = ()=>
{
for(let i=0;i<5;i++)
{
b+=1;
if(i===3)
{
return;
}
}
b+=1;
}
foo();
bar();
console.log("a:"+a+" "+"b:"+b);
</script>
a:5 b:4
break 和 return 的区别
12、
<script>
--"3.14";
- -"3.14";
</script>
- ReferenceError、3.14
- 一元运算符
13、
<script>
var arr = ["a","b","c"];
arr.join();
arr.join(".");
</script>
- “a,b,c” “a.b.c”
- join()默认参数为“,”
- 数组转为字符串
14、
<script>
var str = "hello world";
str.split("");
arr.split("",3);
</script>
- [“h”, “e”, “l”, “l”, “o”, ” “, “w”, “o”, “r”, “l”, “d”] [“h”, “e”, “l”]
- split()方法将字符串转成字符数组
- 第二个参数代表返回地字符数组的长度,默认是分割整个字符串
15、
<script>
console.log(["a","b","c"].join()==["a","b","c"].toString());
</script>
- true
- join()默认参数
- Array.prototype.toString()
16、
[1,2,3].map(parseInt);
- [1,NaN,NaN]
- map()传递的参数含义
- parseInt(string,radix)用法
17、
let [head,...tail] = [1,2,3,4];
console.log(tail);
let [head,head1,...tail] = [1,2,3,4];
console.log(tail);
let [head,...,tail] = [1,2,3,4];
console.log(tail);
- [2, 3, 4]
- [3, 4]
- SyntaxError: Unexpected token
18、
var foo=function(){alert(123)}
window.setTimeout(foo,5000);
window.setTimeout(foo(),5000);
window.setTimeout("foo()",5000)
- alert(123) five seconds later
- alert(123) immediately
- alert(123) five seconds later
19、
setTimeout("alert('5 seconds!')",5000);
setTimeout(alert('5 seconds!'),5000);
- alert(‘5 seconds!’) five seconds later
- alert(‘5 seconds!’) immediately
20、
<p>10<sub>2</sub></p>
<p>10<sup>2</sup></p>
21、onchange、oninput、onblur的区别
- input失去焦点且value变化
- 焦点变化
- input失去焦点
22、浏览器的垃圾回收机制
垃圾收集器必须跟踪哪个变量有用哪个变量没用,对于不再有用的变量打上标记,以备将来收回其占用的内存,内存泄露和浏览器实现的垃圾回收机制息息相关, 而浏览器实现标识无用变量的策略主要有下两个方法:
第一,引用计数法
跟踪记录每个值被引用的次数。当声明一个变量并将引用类型的值赋给该变量时,则这个值的引用次数就是1。如果同一个值又被赋给另一个变量,则该值的引用次 数加1.相反,如果包含对这个值引用的变量又取得另外一个值,则这个值的引用次数减1.当这个值的引用次数变成0时,则说明没有办法访问这个值了,因此就 可以将其占用的内存空间回收回来。
第二,标记清除法
标记清除的算法分为两个阶段,标记(mark)和清除(sweep). 第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。
23、同源策略
同源策略是浏览器有一个很重要的概念。所谓同源是指,域名,协议,端口相同。不同源的客户端脚本(javascript、ActionScript)在没明确授权的情况下,不能读写对方的资源。简单的来说,浏览器允许包含在页面A的脚本访问第二个页面B的数据资源,这一切是建立在A和B页面是同源的基础上。
24、跨域的几种方式
- jsonp(利用script标签的跨域能力)跨域、
- 设置代理服务器(由服务器替我们向不同源的服务器请求数据)
- CORS(跨源资源共享,cross origin resource sharing)
- iframe跨域
- postMessage(包含iframe的页面向iframe传递消息)