zoukankan      html  css  js  c++  java
  • 第二节 JavaScript基础

    JavaScript组成及其兼容性:

      ECMAScript:解释器,翻译,用于实现机器语言和高级语言的翻译器;几乎没有兼容性问题

      DOM(Document Object Model):文档对象模型,文档就是HTML文档,它赋予了操作HTML的能力;有一些操作不兼容

      BOM(Browser Object Model):浏览器对象模型,操作浏览器,起对象就是浏览器窗口。没有兼容性问题(完全不兼容),很少用,而且用户体验不是很好

    变量类型:变量本身并没有类型,它的类型取决于该变量存储的数据的类型  

      查看数据类型:typeof运算符

      常见类型:number、string、boolean、undefined、object、function;可用alert(typeof 变量名) 显示变量类型

      注意:一个变量应该只存放一种类型的数据

    类型转换:

      var a=‘12’;  //字符串类型

      alert(parseInt(a)+5);  //结果返回17,parseInt(a)表示强制转换(又称显式类型转换)

      其实parseInt()是一个函数,如当a=‘12px34’时,强制转换后,a=12(整数类型),因为该函数直接扫描字符串,从第一个数字开始记录,当遇到非数字时,自动跳出循环,并把非数字后面的数字字符自动忽略,而只保留第一次遇到的数字字符串,并将其强制转换为整数型数字;当a=‘abd’,即变量字符串中没有数字,则alert(parseInt(a))会返回NaN(Not a Number),由此我们可用if(isNaN(a))进行判断,如果是“非数字”,则显示提示,否则正确运行;

      同理的还有parseFloat(a);   //把一个字符串转换成浮点型数字

      隐式类型转换:==(先转换类型,然后比较)、===(不转换类型,直接比)、减法(因为“减法”在系统中只有“相减”这一种操作,所以机器会默然转换后,相减;而“加法”,可以用于字符串连接,以及转换成数字后“相加”,而机器会默认选择最简单的一步,就是直接进行字符串连接),例如:

        var a=5;   var b='5';   alert(a==b);  //系统会先将他们都转换成int类型,然后再判断,所以返回True

        var a=5;   var b='5';   alert(a==b);  //系统不会转换类型,而进行直接比较,所以结果返回False

    变量的作用域(作用范围):

      局部变量:定义在函数里面,并且它只能在定义它的函数内部使用;

      全局变量:定义在函数体外部的变量,可以使用在整个程序中;

      什么是闭包:子函数可以使用父函数中的局部变量(就是闭包),所有的程序中基本上都在使用,不需要太在意(有兴趣的可以百度一下)

    命名规范及必要性:

      可读性(能看懂)、规范性(符合规则)

      匈牙利命名法:类型前缀、首字母大写,如表中所示:

    类型 前缀 类型 实例
    数组 a Array aItems
    布尔值 b Boolean bIsComplete
    浮点数 f Float fPrice
    整数 i Integer iItemCount
    函数 fn Function fnHandler
    对象 o Object oDiv1
    正则表达式 re RegExp reEmailCheck
    字符串 s String sUserName
    变体变量 v Variant vAnything

    运算符:

      算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模/余);实例:隔行变色、秒转时间、小小计算器

      赋值运算符:=、+=、-=、*=、/=、%=

      关系运算符:<、>、<=、>=、==、===、!=、!==、

      逻辑运算符:&&与、||或、!非    实例:全选、反选

      运算符优先级:()优先级最高  

    var aLi=document.getElementsByTagName('li');
      for (var i=0;i<aLi.length;i++){  //各行变色
        if(i%2==0){
          aLi[i].style.background='#ccc';
        }else {
          aLi[i].style.background='';
        }
      }
    
        var s=1235;   
        alert(parseInt(s/6)+'分'+s%60+'秒');  //秒转时间    

    流程控制:

      判断:if、switch、?:(三目运算符)  条件?:语句1:语句2

      循环:while、for

      跳出:break(跳出循环,执行下面语句)、continue(跳出本次循环,继续执行下一次循环)

      真(true):非零数字、非空字符串、非空对象

      假(False):数字零、空字符串、空对象、undefined

    Json:

      什么是Json:(百度百科)JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(类似于Python中字典(dictionary)类型)

        json={name1:value1, name2:value2, name3:value3,……};  //其中name2不能和name1相同,否则value2会把value1覆盖掉;另外value1、value2...类型可以相同,也可以不同。

        alert(json.name1);或者用alert(json['a']);  //返回的是value1

      JSon和数组:

        json的元素下标是字符(串),如上面取值语句;  数组的下标是数字,从0开始;

        json没有“长度”,即alert(json.length);返回undefined;  而数组有“长度”;

        在循环语句中:

          for (var i=0; i<arr.length; i++){alert(''+i+'个东西'+arr[i]);} //数组有两种循环方法
          for (var i in arr){alert(''+i+'个东西'+arr[i]);}
          for (var i in json){alert(''+i+'个东西'+json[i]);}  //json的循环方法

      JSon和for in

        上述介绍了json的循环遍历,但是建议数组循环仍用第一种循环,这样不容易弄混

  • 相关阅读:
    【BZOJ 4581】【Usaco2016 Open】Field Reduction
    【BZOJ 4582】【Usaco2016 Open】Diamond Collector
    【BZOJ 4580】【Usaco2016 Open】248
    【BZOJ 3754】Tree之最小方差树
    【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
    【51Nod 1622】【算法马拉松 19C】集合对
    【51Nod 1616】【算法马拉松 19B】最小集合
    【51Nod 1674】【算法马拉松 19A】区间的价值 V2
    【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
    【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
  • 原文地址:https://www.cnblogs.com/han-bky/p/10068396.html
Copyright © 2011-2022 走看看