ECMAScriptjs 入门级常见问题

形容从前:以下是私房总计的有关js常见的入门级的题目部分统计。

js是来 ECMAScript Dom Bom 三局部构成。

1,undefined,NaN,Null,infinity

1) undefined 是undefined 类型

var a; //阐明变量后无赋值

typeof 类型判断情势

console.log(typeof(a))  //undefined

2) NaN 是 number 型 表示未是一个数字

var a=123;

var b=”abc”;

a-b 得到NaN

console.log(typeof(a-b)) number

3) Null 面向对象的概念 表示该目标也空

4)infinity 是number 类型 表示无穷大 除数为0可得

2,js精度问题

js在运算时会合在精度问题:

1)可以事先就以100 1000 ….先化成整数在100 1000
2)number.toFixed(参数) 设置保留小数个数 1.528.toFixed(2) =1.53

3,Math 对象时因而六只函数

1)天花板函数 ceil Math.ceil(1.23)=2 向上再次来到最小之平头
2)地板函数 floor Math.floor(1.23)=1 向下回到最小的整数
3)随机数
Math.random() 重临0-1 的轻易数
Math.floor(Math.random()*10) 再次回到0-9 的即兴数
4) Math.max() Math.min() 重回最充分最小之价值
5)Math.abs(x)再次来到一个绝对值
6)Math.round(x) 四摒弃五顺应

4,数据类型转换

1)隐式转换 变量在运算过程中爆发的类型转换
!! console.log(!!”abc”)
2)显示(强制)转换:
转字符串:a,(String)变量 b,变量.toString()
改变数字型:a,Number(变量) b,parseInt(变量) c,parseFloat(变量)
转布尔型:Boolean(变量)
几乎种转移为false的
undefined NaN Null 0 false “”

5,逻辑运算符的封堵操作:当操作数不是bool值时

  1)隐式转换

    2)从左往右

    3) 哪个操作数可以操纵结果,就赶回这一个本来操作数

    1. 短路与 (&&)

        只要出一个false,就回来 该 值false的子表明式的价值

        短路与:可以确保某个变量有价,在参预运算

    2. 短路或(||)

        只要来一个true,就重临 该 值true的子表明式的价

        短路或:可以一本万利给变量赋初值

6,数组检测方法

var arr=[]
1)Array.isArray(arr) 有兼容性问题
2)arr instanceof Array 推荐以
3) Object.prototype.toString.Call(arr) 可检测任意档次

7,函数的arguments 和 es6 rest 用法

1)arguments只以函数内部由效能,并且永远对当前函数的调用者传入的拥有参数
类似数组
2)rest参数只好写以结尾,前边用…标识
function foo(a, b, …rest) {
console.log(‘a = ‘ + a);
console.log(‘b = ‘ + b);
console.log(rest);
}

foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]

8,函数变量提高:

先行扫描整个函数体的说话,把富有声明的变量“提高”到函数顶部
‘use strict’;
function foo() {
var x = ‘Hello, ‘ + y;
alert(x);
var y = ‘Bob’;
}
foo();
即使是strict形式,但晓句var x = ‘Hello, ‘ +
y;并无报错,原因是变量y在稍后阐明了。
可alert彰显Hello, undefined,表明变量y的值吗undefined。
这多亏为JavaScript引擎自动升级了变量y的宣示,但无会师升级变量y的赋值。

………………………………………………………………………………..
变量提升后代码:
function foo() {
var y; // 提升变量y的发明
var x = ‘Hello, ‘ + y;
alert(x);
y = ‘Bob’;
}
在意:函数内变量的离奇阐明情势
function fun(){
num=10 //没写var 就一定给全局变量
}
fun()
console.log(num) //10

9,this 简单借助于问题

 1 'use strict';
 2     var obj={
 3         name:"test",
 4         printName:function(){
 5             console.log(this.name)
 6         }
 7     }
 8     obj.printName(); //显示 test  this 指的就是obj
 9 
10     var obj={
11             name:"test",
12             printName:function(){
13                 function showName (){
14                     console.log(this.name)
15                 } 
16                 return showName()
17             }
18         }
19     obj.printName(); //this 指向 undefined (在非严格模式下指向Windows)
20 
21      解决方法: var obj={
22             name:"test",
23             printName:function(){
24                 var self=this //在函数外捕获this
25                 function showName (){
26                     console.log(self.name)
27                 } 
28                 return showName()
29             }
30         }

 

10,sort 排序的坑

1)Array的sort()方法默认把具备因素先转移为String再排序,倘若直接排序数字你固然踹坑了
2)默认按照ASCII码进行排序
3)sort 是一个高阶函数,sort(function(){
//写实际的实现逻辑
})
// 升序
sort(function(a,b){
return a-b
})
//降序
sort(function(a,b){
return b-a
})

11,获取样式

getComputedStyle(el,null).width ie 不支持
document.getElementById(“btn”).currentStyle.width ie提供的
  function
getStyle(tag, attr) {  return
tag.currentStyle ? tag.currentStyle[attr] : getComputedStyle(tag,
null)[attr];  } 

12,拼接字符串的题材

当ie7以下是性能问题,可用数组替换
ie7以上无设有拖欠问题

13,数组的几乎单措施

1)arr.slice(start,end) 拷贝数组中之平等段子数据,再次回到拷贝的数组
2)splice(start,length) 重回截取数组的有些因素,修改原数组
splice 的参数领先2只照面用盈余的参数上加到让截取的数组地点及
arr.splice(1,2,”a”,”b”)

14,清空数组:

1)arr.length=0
2)arr=[] //推荐使用
3)arr.splice(0,arr.length)

15,制止事件让挂的措施(ie9 以下不协理)

标签.add伊夫ntListener(enventType,fn,flase) false默认冒泡 true 捕获
function fun(){
alert(“你好”)
}
eg:btn.addEventListener(“click”,fun)
移除事件监听(参数必须同)
btn.removeEventListener(“click”,fun)

ie-6-10(enventType 加on)
标签.attachEvent(enventType,fn)
标签.detachEvent(enventType,fn)

16,事件冒泡,和波捕获

事件冒泡:从里向外执行,遭遇同样之轩然大波以及执行
事件捕获:执行顺序与冒泡相反(不引进以,因为ie使用attach伊夫nt
没有老三单参数)

阻挡事件冒泡
e.stopPropagation()
ie 中截留事件传播 cancelBubble=true

17,事件的目的成效:记录时风波触发时的片段音

btn.onclick=function(event){}
event.target真正触发事件之素
event.type=”click”
event.clinetX/clinetY
ie 低版本不般配
var tar=e.target||e.srcElement

18,Json 串的2方法

1)object–>string  JSON.stringify()
2)  string–> obj  JSON.parse()

 19,异常 

js中具有的不胜且是Error的实例,可经过构造函数,自定义一个可怜对象

    1)伊娃(Eva)lError :运行时老。 eval 函数调用时来的要命

    2)RangeError :运行时杀 超出数据范围

    3)ReferenceError 运行时坏 未定义变量

    4)SyntanxError  预解析,语法错误

    5) typeError: 运行时分外,类型大

    6) URIError:运行时那多少个 在执行encodeURI 和 decodeURI 时抛出的大

20,== ===转换问题

    ==:假诺操作数为目标,则转移成为主旨型。优先采用valueOf() 失利的言语即便用toString()

    ===:类型以及值都相等