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
---恢复内容结束---