zoukankan      html  css  js  c++  java
  • js复习

    js基础语法
        Netcape   
        js基础语法规范(ECMAScript1,2,3,3.1,5(IE9),6   ES    ES6=es2015) DOM BOM  
           BOM :是由浏览器厂商各自实现的,所以差异比较大
           DOM:相关的规范  是由W3C维护的
        Node的优势  没有浏览器的兼容性问题
        前端项目尽量不要使用ES6,需要考虑兼容性问题
    --------------------------------数据类型---------------------------
    1.数据类型分类:
                基本数据类型:number   string   boolean      undefined    null
                复杂数据类型:对象(数组,函数,日期)
     
    undefined:数据未定义的一种状态
    2.typeof 返回的数据类型
    可以返回这六种数据类型:number  string  boolean  function  undefined  object
    日期,数组,正则都是object类型
    可以使用typeof来检测前5中的数据类型 '
    注意返回的是字符串   小写
    console.log(typeof  alert());//function  使用typeof检测函数 返回的是function
     
    3.逻辑运算符
    &&  :   左边为真的话,返回右边;左边为假的话,返回左边      (如果左边为真,需要计算右边所以会返回右边的结果)
    ||  :左边为真的话,返回左边;左边为假的话  返回右边   (如果左边为真,就不需要再计算右边了,所以会直接返回左边的值)
    console.log(undefined  &&  10);//undefined
    console.log(0 || 3);//3  
     
    真假值:
    假值:  空字符串""   数值0   false     null(声明的变量赋值了但是赋值的是空值)   undefined(变量声明了但是没有定义)    NaN(不是一个数字,NaN本身是number类型的)  
     
    4.获取对象未定义的属性的话返回的是undefined不是  is not defined
    var  obj = {name:''xiaoming"};
    console.log(obj.age);//undefined
    5.值类型  引用类型
    值类型:数字 字符串  boolean  null  undefined
    引用类型:对象
     
    5.  instanceof
    var  result = obj  instanceof   XXX;
    返回值是一个boolean类型
    检测obj是否是XXX类的一个实例
    1. var obj ={};
    2. console.log(obj instanceof Object);
    3. var arr =[1,2,3,4];
    4. console.log(arr instanceof Array);
        
    constructor属性:保存了对构造特定对象实例的函数的引用
    1. console.log(arr.constructor==Array);//true
    2. console.log(obj.constructor==Object);//true
    3. console.log(num.constructor==Number);//true
     
    代码调试   异常捕获
    面向对象基础复习
    构造函数和原型
     
    变量声明提升(词法作用域 原理性的介绍)
    作用域:全局作用域     局部作用域(写一个函数就产生了一个局部作用域)
     
     
    1. function bar(){
    2. function foo(){}
    3. foo =10;//2.给变量foo赋值 10 foo变为了一个number类型
    4. // function foo() {}//1.函数声明 提升到当前作用域的顶端
    5. return foo;//3.将number类型的的foo返回
    6. }
    7. // console.log(foo);
    8. console.log(typeof bar());
     
    1. function fun(a, b){
    2. for(var i =0; i < arguments.length; i++){
    3. console.log(arguments[i]);//分别打印的函数的参数
    4. }
    5. return a + b;
    6. }
    7. console.log(fun(3));//NaN 3+undefined 得到是一个NaN
    1. var foo =function bar(name){
    2. console.log("hello"+ name);
    3. };
    4. foo("world");
    5. //bar();//无法打印 bar is not defined
    6. /*在函数内部,bar可以被访问,此时的bar就相当于foo,相当于函数本身*/
    7. //只能通过打印foo.toString()从而找到bar
    8. console.log(foo()== bar());
    9. console.log(foo.toString());//打印的是function bar(name) 函数体
    10. function t1() {

      console.log(str2);  //is not defined

      str2 = 'mike';

      }

      t1();

      第一种情况涉及到JavaScript的运行阶段,分为词法分析阶段和运行阶段,在词法分析阶段时,先声明了str2变量但没有赋值,所以在运行阶段就出现了undefined。

      第二种情况在词法分析阶段也无法声明str2,因为没有var关键字声明,所以在运行阶段直接抛出异常。

     
  • 相关阅读:
    自定义实现wcf的用户名密码验证
    EF6:编写你自己的code first 数据迁移操作(睡前来一篇,翻译的)
    .net 连接Redis
    idea external libraries 只有jdk问题
    MAC vim安装gruvbox主题
    Mac gitk安装与优化
    spring security 4 filter 顺序及作用
    mysql 采样查询 / 间隔查询 / 跳跃查询的两种实现思路
    nginx warn an upstream response is buffered to a temporary file /var/cache/nginx/proxy_temp/ while reading upstream
    nginx日志 logrotate配置
  • 原文地址:https://www.cnblogs.com/chw8/p/7493190.html
Copyright © 2011-2022 走看看