JS基础篇02
第五讲 函数
写一个获取非行间样式的函数
/**
*获取非行内样式
*
* @param {element} ele 需要获取样式的元素
* @param {string} attr 获取的样式属性名
* @returns
*/
function getCss(ele,attr){
if(!ele.currentStyle){
return getComputedStyle(ele)[attr];
}else{
return ele.currentStyle[attr];
}
}
说说你对作用域链的理解?
函数执行时会产生私有作用域,函数内部的函数执行又会产生一个子级作用域,这样一级一级形成作用域链的关系。函数内部使用变量时,先从当前作用域查找,如果没有,就逐级向上级作用域查找,一直找到全局作用域,如果没有就报错。
var x=1,y=z=0;
function add(n){n=n+1};y=add(x);
function add(x){n=n+2};z=add(x);
console.log(x,y,z);
1 undefined undefined
函数重名,最后变量都会覆盖函数,并且函数内部并没有返回值
请解释变量提提升(预解析)?
js代码运行之前,会先进行预解析
找到var的变量提前声明,先不赋值;找到function,声明并且赋值
函数内部预解析:①先进行函数作用域内部的预解析(var ,形参 ,function) ②形参赋值 ③从上往下执行代码
函数声明和函数表达式声明的区别?
函数声明预解析,声明并赋值,可以在创建之前调用
表达式声明,只声明变量不会赋值,不能在创建之前调用
Javascript两种变量范围有什么不同?
全局变量:直接声明在全局作用域的变量,在任何地方都能访问
私有变量:在函数内部声明的变量,私有变量在函数以外不能访问,函数的形参也是私有变量
第六讲 定时器与函数封装
定时器的分类?他们的区别及用法是什么?
//等待一段时间,执行一段代码,只执行一次
setTimeout(function(){},间隔时间)
//每隔一段时间执行一个函数,反复运行
setInterval(function(){},间隔时间)
第七讲 时间对象&字符串对象
js有哪些内置对象?
把下面的字符串去重,并去掉特殊字符按照数字在前字母在后的顺序排序字符串,如下:‘1233fddfd&3434fdsa&454545&4545444rfdsfd&545gdsgs’
截取字符串‘abcdefg’中的def。
有这样一个url:http://item.taobao.com/item?a=1&b=2&c=&d=xxx&e,请写一段js程序提取url中各个get参数(参数名和参数个数不确定),将其key-value形式返回到一个json结构中,如{a:'1',b:'2',c:'',d:'xxx',e:undefined}
判断一个字符串中出现次数最多的字符,并且统计次数。