js基础常见问题总结(一)~

1. 什么是web标准

简单的说,就是HTML、CSS、JavaScript这三者分离。WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如 W3C DOM)、ECMAScript等。

2. 2.css优先级

! important > 行间 > ID > class > 通配符

3. 网页的解析顺序

页面加载顺序:解析HTML结构、加载外部脚本和样式表文件、解析并执行脚本代码、构造HTML DOM模型、加载图片等外部文件、页面加载完毕。

4. js中全局变量属于window,怎样解决他不属于window

使用箭头函数、改变指向后全局变量就不在属于window了

5.js中的分号要在什么时候加

事件函数,所有的大括号后面都要加分号
  等号右边必须加分号

6. return的一些特性

函数没有返回值会返回undefined,有return没有值,也返回undefined;
  会阻止后面代码的执行
  作用:
   阻止后面代码的执行
   封装函数

7. 面向对象的三大特性

三大特性是:封装,继承,多态

8. 定时器

setTimeout clearTiomeout 可以模拟循环
  setInterval clearInterval

9.阻止默认事件

  return false;   //事件绑定
  event.preventDefault();  //事件监听
  event.returnValue = false;    //IE下使用

10. js中批量修改样式

 //第一种
  setStyle(oDiv, {width: '200px', background: 'red'}); 

 //第二种 使用cssText
  oDiv.style.cssText="width: 200px; height:300px; background:yellow;";   

 //使用第三种 with (不推荐使用)
    with(oDiv.style) {
       width='300px';
       height='500px';
       background='yellow';
    }

11. 获取非行间样式

    window.onload = function(){
        var oDiv1 = document.getElementById("oDiv1");
        var oDiv2 = document.getElementById("oDiv2");
        //获取行内样式
        alert(oDiv2.style.background)

        //获取非行内样式 currentStyle是IE中m的属性,getComputedStyel是其他浏览器的方法
            //在非行间样式中,style属性只能去赋值,在行间样式中才能获取样式
        function getStyle(obj,attr){
            if(obj.currentStyle){
                return obj.currentStyle[attr]
            }else{
                return window.getComputedStyle(obj,fa6lse)[attr];
            }
        }
        alert(getStyle(oDiv1,"background"))
    }

12. 循环中break和continue

break是结束整个循环体,continue是结束单次使用
  break也可以在while中使用

13. js语句中的条件语句和循环语句

条件语句:

//第一种  【if语句】对于区间的一个判断,只有一个语句时可以不写大括号
  if( 条件 ){ 
    //条件为true时执行的代码 
  }else{
    //条件为false时执行的代码
  }

//第二种  【switch语句】离散型的判断
  switch( 条件 ){
      case 条件1:
      //条件为true时执行的代码
      break;
      case 条件2:
      //条件为true时执行的代码
      break;
      case 条件3:
      //条件为true时执行的代码
      break;
      default:
      //默认要执行的代码
  }

循环语句:

//第一种  【while语句】
  while( 循环的条件 ){
     //条件为真时重复循环,否则退出循环
  }

//第二种  【do while语句】不管条件是否满足,都会循环一次
  do{
    //循环体
  }while(判断逻辑)

//第三种  【for语句】
  for( 初始化; 循环条件; 变量的更新 ){
    //代码
  }

//第四种  【for in语句】
  for(variable in object){
      statement
  }

/***以下两种在IE6-8下都不兼容***/

//第五种  【forEach()】
  var ary = [12,23,24,42,1];
  var res = ary.forEach(function (item,index,input) {
       input[index] = item*10;
  })
  console.log(res);//-->undefined;
  console.log(ary);//-->会对原来的数组产生改变;


//第六种  【map()】
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
     return item*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];

14. 三目运算符

变量 = 条件?语句:语句

15. js中的真假值

真:true,非空字符串,非0数字,非空对象
  假:false,0,空字符串,空对象,null,undefined,NaN

16. 基本数据类型

symbol   (ES6引入的新的数据类型,表示独一无二的值)
  undefined  未定义
  boolean   布尔
  string    字符串
  null     空
  number   数字
  object    对象

检测数据类型:typeOf() instanceOf()

17.几种出现undefined的情况

- 未声明的变量
  - 已声明未定义的变量
  - 传参没有值
  - 访问不存在的属性

18.隐式转换

** "+"运算符 **

  var a = 1 + '2';
  console.log(a) //12

当运算符“ +” 两边一个是数字类型, 一个是字符串类型时, js引擎规定进行字符串连接运算而非算术加运算。 利用运算符“ +” 这个特性,可以很方便的将Number转换成String

** "-"运算符 **

       var a = 11, b = '5';
       var c = a - b;
       alert(typeof c); //--> number

-”运算符会把字符串b隐式的转换成数字5再进行算术减法运算。

19. 显式转换

转换为数值类型:
  Number(mix)
  parseInt(string,radix)  转成整数
  parseFloat(string)   转成浮点数
  这三个函数可以把非数值转换为数值。第一个函数,即转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。

转换为字符串类型:
  toString(radix)
  String(mix)

转换为布尔类型:
  Boolean(mix)

20. 解决this在某些情况不能使用的问题

1.使用箭头函数
  2.定时器外层写一个变量

21. 解决i在某些情况不能使用的问题

1. 循环中加事件,事件不能用i,
    自定义属性(IE不支持,自定义属性不能写在行间)
  2. 循环中加定时器,定时器不能用i
    封闭空间(自执行函数)

你可能感兴趣的:(js基础常见问题总结(一)~)