JS笔记

来源:互联网 发布:js中的map 编辑:程序博客网 时间:2024/05/29 08:02

概述:

JavaScript组成:
ECMAScript:解释器,翻译
DOM:DocumentObject Model
BOM:Browser Object Model
各组成部分的兼容性,兼容性问题由来。

变量类型
数据类型转换
约定:一个变量应该只存储一种类型的数据

变量作用域 闭包

命名规范
可读性,规范性
匈牙利命名法(类型前缀,首字母大写)

运算符
算数
赋值
关系
逻辑
优先级

程序流程控制
判断
循环
跳出
真&假(什么是真值,什么是假值)

Json
Json是什么
Json和数组
Json和for in

%求模的应用
隔行变色:

for(var i=0;i<aLi.length;i++){           if(i%2==0){           aLi[i].style.background='';          }else{           aLi[i].style.background='';        }}

秒转时间
parseInt()-字符串转换为数字,取整。
Date()-Date对象

break和continue的区别

Json:一种轻量级数据交换格式,由键值对组成。
格式:

Json和数组的区别:
Json由大括号括起来{},数组由中括号括起来[]
Json的索引是字符串,数组的索引是数字。
Json没有length,数组有。
可以用for in使Json和数组循环取出全部值。
但最佳搭配是数组-for 0~length
Json-for in

for(var i in json){
alert('第'+i+json[i]);
}

函数返回值
(return):函数的执行结果
可以没有return。
一个函数应该只返回一种类型的值

函数传参
可变参(不定参):arguments
参数的个数可变,参数数组
例1.求和

        function sum()          {                  //arguments是一个数组                  var result=0;                  for(var i=0;i<arguments/length;i++){                    result+=arguments[i];                  }                  return result;          }

例2.CSS函数

 <script type="text/javascript"> function css(obj,name,value){        if (arguments.length==2) {            return obj.style[name];        }else{            obj.style[name]=value;        }    }      window.onload=function(){        css(oDiv,'background','green');      }</script>

获取非行间样式(只获取,不能用来设置)
obj.style只能获取行间样式
obj.currentStyle可以获取非行间样式,只兼容IE,Chorme不兼容
getComputedStyle(obj,false).width;//不兼容IE7 兼容IE11 FF、opera、safari、chrome
JS第二定律:凡是好东西,都不兼容

兼容处理&&常用功能封装成函数

if(oDiv.currentStyle){  //IE}else{  //FF}

//只能取单一样式,不能取复合样式

function getStyle(obj,name){    if(obj.currentStyle){        return obj.currentStyle[name];     }else{        return getComputedStyle(obj,false)[name];     }}

复合样式(快捷,可以再分为很多样式)
单一样式(不可再分)

数组基础

定义   1.  var a=[1,2,3]; 2.  var a=new Array[1,2,3];  作用完全一致,但1更优。

数组的属性

 length  既可以获取,又可以设置 例:快速清空数组 数组使用原则:数组中应该只存一种类型的变量。
添加和删除arr.push(element)//从尾部添加arr.pop()//从尾部删除arr.shift()//从头部删除arr.unshift(element)//从头部添加splicevar arr=[1,2,3,4,5,6];//删除:splice(起点,长度)//arr.splice(2,3);//插入:splice(起点,长度,元素...);//arr.splice(2,0,'a','b','c');//删除+添加:替换//arr.splice(2,2,'a','b');数组连接 concatarr1.concat(arr2);//arr1+arr2join(分隔符)用分隔符,组合数组元素,生成字符串arr.join('-');//

题外话:如何把字符串切割成数组
split() 方法用于把一个字符串分割成字符串数组
语法
stringObject.split(separator,howmany)
参数
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括separator 自身。
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

提示和注释
注释:如果把空字符串 (“”) 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

排序和转换
arr.sort();

解决数组sort只识别字符串的问题
arr.sort(function(n1,n2){
/*if(n1

0 0
原创粉丝点击