js复习

作者: gtt21 | 来源:发表于2018-07-16 18:49 被阅读0次

概念描述:javaScript是一种基于对象和事件驱动并且相对安全性的客户端脚本语言 。
特点:松散性 继承机制 对象属性
数据类型: undefined null 布尔 string number object function函数不是数据类型
var box;
alert( typeof box); box是underfind类型

什么是真什么是假:

  1. 真:true 非空字符串 任何非零数字值 任何对象
  2. 假:false 空字符串 0和 NaN undefined

隐式转换和强制转换

parseInt(); 只能转换字符串至数值 遇到非数字就停止,开头非数字返回NaN;
parseFloat(); 只能识别第一个小数点后边的数值;
toString(); 数值转换成字符串;不包含null和undefined
string(); 强制转换 包含null和undefined
++box跟box++的区别:前者是先计算后赋值,后者是先赋值后计算
var box =100 + "100" //转让个人时候加号就是字符串连接符,而hi不是加法运算; 只要其中一个是字符串,
关系运算符中 如果两个都是数值字符串,那么就会进行第一个数字的比较 “3”>"22" true
break和continue语句的区别:break语句是立即退出循环,强制继续执行循环体后面的语句。continue语句是退出当前循环,继续后面的循环。
with语句:var n=box.name ==with(box){var n =name};
do while:先运行再判断

 $(function(){
    var box = 1;
    do{
        alert('box');
        box++;
      }while(<=5);
    // while语句格式
    var box =10;
    whille(box<=5);
    alert(box);
    box++;
  })

while语句:先判断再运行
for语句:for(var box=1;box<=5;box++){alert(box)};
for in 语句:var box = {
'name':'12',
'age':'15',
'height':'178'
}
for(var p in box){alert(p)}
.join(|); 默认情况下数组字符串会以逗号分隔开,使用join();方法可以用不同的分隔构建这个字符串
用instanceof来检测基本类型的值 返回布尔值
.concat();连接两个或多个数组 {var cArray = array1.concat(bArray);
cArray.splice(1,1);}
.push(); 末尾添加数组
.pop(); 删除末尾数组
栈方法是后进先出,列队方法是先进先出
.shift(); 删除数组开头的一个元素
.unshift(); 在数组开头添加一个元素
.reverse(); 逆向排序;
.sort(); 从小到大排序;
.slice(1,3);截取数组 只取1.2 3元素;
.splice(0,2); 删除数组 删除从第0个位置取2个
.splice(1,0,'江苏','盐城'); 从第一个插入点插入元素 0表示不删除
.splice(1,1,'100'); 替换
时间:
var data = new Date();
alert(data.toLocaleString());本地格式区域字符串
Data.parse(4/12/2007''); 返回的是一个毫秒数;
new Data(Data.parse(4/12/2007'')) //把毫秒数转换成看得懂的时间
.getFullYear(); 年
.getMonth() + 1; 月 月份是从0月开始的
.getData();
.getHours();
.getMinutes();
.getSecond();
call();和aply();的做用和区别:
做用:改变this的指向,第一个参数为你要传入的对象,传入后函数的this就指向了这个对象,后面的参数为你为函数传递的参数值;
区别:call可以传入多个参数;
apply只能传入两个参数,所以其第二个参数往往是作为数组形式传入

less跟scss的区别:

1.编译环境不同:less基于node,scss基于ruby;2.声明方式不同:less以@声明;scss以$声明。

什么是预处理器:
好处:可以让 CSS 更加简洁、适应性更强、可读性更佳,更易于代码的维护等。
jsonP原理:动态的创建一个Script标签,利用script,src访问不受限制,url后边要跟一个函数,对返回的数据做处理。
json跟jsonP的区别:json是一种数据交换格式,而jsonP是json的一种使用模式, 是基于json的
webSocket:是htm5开始提供的一种在单个TCP链接上进行全双工通讯的协议,在webSocket API中,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以数据互相传送。
浏览器 通过javaScript向服务器发出建立WebSocket链接请求,链接建立以后,客户端和服务器端就可以通过TCP连接 直接交换数据。当你 获取WebSocket连接后,可以通过send()的方法来向服务器发送数据 ,并通过onmessage事件来接收服务器返回的数据。
MySQL语句
查:select * from 表名
删:delete from 表名 where 条件 where ID= 2;
增:insert into 表名 values(0,1,2)
改:update 表名 set字段 = '值',where ID= 2;
基本类型和引用类型的区别 基本包装类型:就是字面量类型
引用类型的自定义方法和属性可以识别,基本类型的自定义方法和属性不可以识别,相同点:都可以识别内置属性和方法
toString() 把数字转换成字符串
toLocaleString() 本地化把数值转换成字符串
toFiexed(2) 小数点保留两位转换成字符串 四舍五入
charAt(1) 返回字符串指定下标的值
slice(3) 从第三个字符串开始截取
indexof() 返回字符串下标
toLowerCase() 字符串转小写
toUpperCase() 字符串转大写
replace()字符串替换
split(“ ”) 字符串以空格分隔成数组
*this表示new object实例化出来的一个对象,this要放在一个作用域下”
构造函数的示意图

     function Box(user,age){
        this.user  = user;   //实例属性
        this.age  = age;
        this.run   = function(){   //实例方法
            return this.user + this.age + "gtt"
        };
    };
    var box1 = new Box('lee',38)
    var box2 = new Box('gtt',18)
    alert(box1.run());
    alert(box2.run());

box1 -->box{name:12;age:16}
box1 -->box{name:12;age:16}
原型的示意图

    function Box(){};
    Box.prototype.name = 'gtt';   // 原型属性
    Box.prototype.age = 18;
    Box.prototype.run = function(){   // 原型方法
        return this.name + this.age + '我爱你'
    }
    var box1 = new Box();
    var box2 = new Box();
    alert(box1.run());
    alert(box2.run());

box1 -->box{-proto-} \
同时指向 -->{name:14;age:18}
box2 -->box{-proto-} /
如果是实例方法,不同的实例化,他们的方法地址是不一样的是唯一的;如果是原型方法,她们的地址是共享的,大家都是一样的

如何判断一个变量是对象还是数组:

  • 使用instanceof 要先判断是不是数组,否则都会返回opject
  • 其中用prototype.toString.call()兼容性最好

去重
1、Set结构去重。
2、遍历,将值添加到新数组,用indexOf()判断值是否存在,已存在就不添加,达到去重效果。

   let a = ['1','2','3',1,NaN,NaN,undefined,undefined,null,null, 'a','b','b'];
    let unique = arr =>{
    let newA=[];
        arr.forEach(key => {
        if( newA.indexOf(key)<0 ){ //遍历newA是否存在key,如果存在key会大于0就跳过push的那一步
            newA.push(key);
             }
         });
            return newA;
    }
        console.log(unique(a)) ;//["1", "2", "3", 1, NaN, NaN, undefined, null, "a", "b"]
        //ps:这个方法不能分辨NaN,会出现两个NaN。是有问题的,下面那个方法好一点。

3、遍历,将数组的值添加到一个对象的属性名里,并给属性赋值,对象不能添加相同属性名,以这个为依据可以实现数组去重,然后用Object.keys(对象)返回这个对象可枚举属性组成的数组,这个数组就是去重后的数组。

let a = ['1', '2', '3', 1,NaN,NaN,undefined,undefined,null,null, 'a', 'b', 'b'];
    const unique = arr => {
        var obj = {}
        arr.forEach(value => {
        obj[value] = 0;//这步新添加一个属性,并赋值,如果不赋值的话,属性会添加不上去
        })
        return Object.keys(obj);//`Object.keys(对象)`返回这个对象可枚举属性组成的数组,这个数组就是去重后的数组
    }
        console.log(unique(a));//["1", "2", "3", "NaN", "undefined", "null", "a", "b"]

splice()将字符串转换成数组,join();将数组转换成字符串

在JS中 Object === Object 感觉没有任何问题 这两个都代表的一个东西

但是如果你试过 NaN === NaN 是返回false为什么呢?
NaN==NaN 返回false
因为NaN 是:Not a number (不是一个数字的缩写)

既然不是一个数字 那么很好理解 'A'不是一个数字 ,'B'也不是一个数字

那么既然他们两个都不是数字 ,难道'A' === 'B'吗? 显然不是

所以这个东西开出来是有原因的

排序

  var numberArray = [3,6,2,4,1,5];
        numberArray.sort(function(a,b){return b-a})
        alert(numberArray)

获取浏览器可视范围的页面窗口
window.innerWidth //window.innerHeight
document.documenElement.clientWidth
document.documenElement.clientHeight
间歇调用

  • 超时调用 var box= setTimeout(function(){alert('lee')},2000)
    clearTimeout(box) 取消当前超时调用

  • 间歇调用 var box = setInterval(function(){alert('lee'),2000})
    clearInterval(box) 取消当前间歇调用
    DOM操作等待html文档加载完毕才可以获取,可以把script标签放在后边

  • setAttribute();设置属性和值

  • scrollIntoView(); 设置指定可见

事件绑定和普通事件的区别
普通事件中的onclick是DOM0级事件只支持单个事件,会被其他onclick事件覆盖,而事件绑定中的addEventListener是DOM2级事件可以添加多个事件而不用担心被覆盖
css中那些属性可以被继承

  • 字体相关:line-height, font-family, font-size, font-style, font-variant, font-weight, font

  • 文本相关: letter-spacing, text-align, text-indent, text-transform, word-spacing

  • 列表相关:list-style-image, list-style-position, list-style-type, list-style
    js原生值转json字符串:JSON.stringify()
    json字符串转js原生值:JSON.parse()

相关文章

  • React入门(一)

    React 一. js复习 重新理解javascript(适合快速浏览复习闭包等基础的js知识)。快速复习js特性...

  • js复习

    概念描述:javaScript是一种基于对象和事件驱动并且相对安全性的客户端脚本语言 。特点:松散性 继承机制 ...

  • js复习

    1.数据类型number string Boolean undefined null o...

  • js 复习

    1 数据类型 基本六个类型,亮点 提到了ES6 的symbol 如果问到 判断数据类型 除了说明...

  • js复习

    1 数据类型 2 ===和==的区别, 3 js onload和DOMcontentloaded的区别 ...

  • js复习

    1. 作用域 词法分析,解析(抽象语法树),代码生成 摘自YDKJS 引擎:负责从始至终的编译和执行我们的 Jav...

  • 复习js

    web的标准: 结构,样式,行为 样式的层级关系: !important>行内样式>ID>class>Elemen...

  • js复习

    ===相对于==多了一个类型比较 事件 onclick onmouseover onmouseout onmous...

  • WEB__frontend--React6(hooks/hoc)

    复习redux app.js actions folderindex.js user.js reducer fo...

  • 2018-10-23

    复习js的逻辑,学习vue

网友评论

      本文标题:js复习

      本文链接:https://www.haomeiwen.com/subject/tahkpftx.html