• javascript 高级程序设计 重点


    ---恢复内容开始---

    买了高设有一阵时间了,工作太忙一直没时间看~好吧,我承认是我太懒了这书那么厚,看着就脑袋疼,行吧!最近要努力学习了,好记性赶不上烂笔头,本身我也不是什么聪明人,但是上天总会眷顾努力的人的,对吗?

    工作上一直用着jquery,因为工作就我一个前端,遇到点问题还真是一头雾水。还好后台拍黄片(php)的小哥哥会点,一起研究总会把问题解决。

    虽然工作再用jquery,但是原生的js总用种可望不可及的赶脚。原生js搞不定叫啥前端开发工程师!拿起高设,把每一张的重点记录下来。希望在我遍历完高设的时候会js会是另一种态度!

    // 以上为前言

    第一章  JavaScript 简介

    javascript 是一种专门为网页交互而设计的脚本语言,有三个部分组成:

    1.ECMAScript提供核心语言功能

    2.DOM对象:即文档对象类型,主要提供访问和操作网页内容及接口

    3.BOM对象:即浏览器对象模型,提供浏览器交互的操作和接口

    第二章  在HTML 中使用JavaScript

    <script>元素

    在外部调用script是要用src属性,设置相应的文件的URL,所有的script文件都是依次加载

    第三章  基本概念

    一、语法:

    1,区分大小写:变量名,函数名和操作符都区分大小写;

    2,标识符:采用驼峰命名例如:‘firstName’,

    3,注释://三行注释   /* */多行注释

    二、关键字和保留字

    这个就不写了,就是平时里在写JS 里的那些关键字,什么for,return break什么的,这些都不能用作标识符。

    三、变量

    ECMAScript是松散类型的,就是可以保存任何类型的变量,换句话说,变量仅仅是用于保存值的占位符而已, 用 var 声明 后面跟着变量名

    var message; 这样的未经初始化的变量,会保存特殊的值undefind;

    var message ='hi';  保存字符串‘hi’保存在message中,

    用var 操作符定义的变量将成为该变量作用域的局部变量,也就是说,如果在函数中使用变量,在函数退出后就会被销毁

    function text(){
       var message = 'hi';
    }
    text();
       console.log(message);//错误

    可以定义多个变量,虽然格式缩进不是必须的,但是这样提高了可读性。

    var a = 'hi',
          b = 'hello',
          c = 'bad';

    四、数据类型

    ECMAScript里分为5种基本数据类型:

    undefind、Null、Boolean、Number、String,

    还有一种复杂的数据类型:Object ,本质是由一组无序的名值对组成

    typeof操作符是检测给定变量的数据类型。

    undefind:未被定义的;Null:是特殊的值,

    Null表示一个空指针对象,所以用typeof检测数据类型为object,如果定义的变量准备在将来用于保存对象,最好将变量的初始化为null

    Boolean:两个值,true和false;

    Number:分为整数和浮点数。NaN 即非数值,是一个特殊的数值,用于要返回数值的操作数未返回数值的情况。NaN与任何值都不想等,包括自己本身,ECMAScript定义了isNaN()函数。这个函数可以接受任何类型,会帮我们确定这个参数是否“ 不是数值 ”,

    isNaN(NaN);//true

    isNaN(10)//false

    isNaN('10') //false

    isNaN('red') //true

    isNaN('true') //false;

    数值转换:有三个函数可以把非数值转换成数值:Number();     parseInt() 返回整数;        parseFloat();返回带有小数点的

    string:字符串 ‘’ ,toString()方法,可以转换为字符串。

    object: 就是一组数据和功能的集合。

    五、操作符

    一元操作符

    (1)递增和递减操作符:

    var age =29;++age;    //30   
    var age=29;age++;     //29

    前置与后置的区别在于,后置的操作是包含他们语句中被求值之后在执行的。

    var age = 29;

    age++;       //29
    console.log(age);   //30

    一元加和减操作符

    一元加操作符以一个加号显示,放在数值前面,不会对数值产生任何作用。

    var num = 50;

    num = +num;  //50;

    一元减操作符:主要表示负数,比如将1转换为-1;

    (2)布尔操作符

    一共分为三个:逻辑非 ,逻辑与, 逻辑或

    逻辑非:(!)无论这里是什么值返回的都是布尔值。

    逻辑与:(&&)有两个操作数,只要有一个返回的false ,结果就是false;

    true&&true  //true;

    true&&false    //false;

    false&&true   //false;

    false&&false   //false;

    逻辑或:(||)有两个操作数,只有有一个是true,就返回true,

    相等操作符

    相等操作符分为两组操作符:相等和不相等        全等和不全等

    相等和不相等:先转换在比较(==),在做比较是,会强制转换类型,在比较他们相等

    下面是一些特殊情况,可以未来面试可以用到

    null == undefind是相等的,NaN不相等与任何值,甚至自己都不相等

    null == undefined   //true;
    "NaN" == NaN       //false;
    5 == NaN              //false;
    NaN == NaN         //false;
    NaN  !=  NaN        //true;
    false   ==   0;      //true;
    true == 1 ;          //true;
    true ==2 ;            //false;
    undefined == 0;    //false;
    null ==0;              //false;
    '5' == 5;            //true

    全等和不全等:(===)除了比较之前不转换操作数之外,全等和不全等的操作是相等的操作是一样的

    在(==)相等操作中。null  ==  undefined //true,但是在(===)中 null ===undefined 是false  ,因为他们数据类型不一样

    六、语句

    成为流控制语句

    if语句 用于判断

    do-while语句:

    是后测试循环语句,及只有在循环体中的代码执行后,才会测试出口条件。

    while语句:是前测试循环语句,在循环体代码执行之前,就会对出口条件求值,因此有可能循环体内的代码永远不被执行

    for语句:也是前测试语句,它具有执行循环之前初始化变量,和定义循环要执行的代码的能力

    var count=10;
    for(var i = 0;i<count;i++){
        console,log(i);
    }    
    

    break与continue语句

    是在循环内精确控制代码的执行,其中,break语句会立即跳出循环,强制执行循环后面的语句,而continue语句虽然也是立即跳出循环,但退出时会从循环的顶部继续执行

    switch语句:可以在语句中使用任何数据类型,case 不一定时常量,可以时变量,甚至时表达式  

    switch(i){
            case 25:
            alert('25');
            break;
            case 35:
            alert('35');
            default:
             alert('other');        
    }

    七、函数

    函数对任何语言来说都是一个核心额概念,通过函数可以封装任意多条语句,可以在任何时候,任何地方调用,ECMAScript中的函数使用function声明,后跟一组函数体

    function say(name,age){
        console.log("hello"+name+'my'+age+"years old");
    }
    say("chen","25");

     在定义时不必指定是否返回值,实际上,任何函数都可以使用return语句跟要返回的值实现返回值

    function diff(num1,num2){
     if(num1<num2){
        return num2-num1
     }else if(num1>num2){
        return num1-num2
     }else{
        return 0;
    }
    }
    diff(2,1);
    //1

     遇到return 执行后会直接跳出,不运行下面的代码

    理解参数:SCMAScript函数中,不介意你的参数时什么类型,也不介意你传几个参数,因为在参数中,SCMAScript中参数的内部是用一个数组表示的,函数接受的始终是这个数组,而不关心数组中包含哪些参数,如果包含多个元素,也没有问题,在函数体内可以通过arguments对象来访问这个参数数组,从未获取每一个参数,arguments对象只是与数组类似,但是他并不是Array实例,因为可以使用方括号语法访问他每个元素,arguments[0],arguments[1]以此类推。

    function xx(){
       alert('chenhaowei,'+arguments[0]+arguments[1]);
    }
    xx(1,2);

     通过arguments对象的length属性。可以获知有多少个参数传递给了函数 arguments.length

    可以中这种方法分别实现适当的功能

    function add(){
      if(arguments.length ==1){
    	console.log(arguments[0]+arguments[0])
     }else if(arguments.length==2){
        console.log(arguments[0]+arguments[1]);
      }
    }
    add(10,50);     //60
    add(10)       //20

     第四章  变量、作用域和内存问题

    za

     

     

    ---恢复内容结束---

  • 相关阅读:
    26、面向对象设计模式之单例模式——泛型单例
    Unity 汽车碰撞
    makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
    NSHashTable NSPointerArray
    webrtc 音频一点相关知识
    记一次ios加急上架经历
    iOS 获取当前正在显示的ViewController
    ios表单上传图片或文件
    https适配
    swift block
  • 原文地址:https://www.cnblogs.com/chendahao/p/7978333.html
Copyright © 2020-2023  润新知