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

 

 

 

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

posted @ 2017-12-04 18:01  陈大浩爱学习  阅读(351)  评论(0编辑  收藏  举报