第0章 课前说明

Snipaste_2019-02-27_16-37-51

第0章 课前说明

0.1 学习方法及态度

没有学不会的知识,只有不努力的傻子!!!

学习的过程很痛苦,不学习的日子是苦难!!!

0.2 学前准备

1:拒绝一阳指和二指禅; 2:打字练习,及格线: 100/分

jianpan-2

3:windows中的常用快捷键 

0.2.1

0.3 开发工具

0.3.1 浏览器

浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。

国内网民计算机上常见的网页浏览器有,QQ浏览器、Internet Explorer、Firefox、Safari,Opera、Google Chrome、百度浏览器、搜狗浏览器、猎豹浏览器、360浏览器、UC浏览器、傲游浏览器、世界之窗浏览器等,浏览器是最经常使用到的客户端程序。 

0.3.2

常用的五大浏览器:chrome,firefox,Safari,ie,opera;

我们用的最多的则是 chrome(谷歌浏览器) 和 Firefox(火狐浏览器)

0.3.1

0.3.2 编辑器

Sublime Text、VSCode、Atom、Brackets、WebStorm、Notepad++、HBuilder、Vim、记事本......

0.4 JavaScript语言的强大

http://impress.github.io/impress.js/http://naotu.baidu.com/http://echarts.baidu.com/index.html

总结:

摆正学习心态;编程基本功要练好;编程使用的工具要熟悉且顺手;我们要学的 JavaScript 很强大;

第1章 JavaScript介绍及基础语法

1.1 JavaScript编程语言

JavaScript,简称JS,是一种客户端脚本语言,主要用来向HTML网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。

可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinux、Mac、Android、iOS等)

JS主要运行于客户端(浏览器),也可以运行在服务端(操作系统)

JavaScript 和 Java 是两种不同的编程语言:JavaScript主要用于客户端,Java用于服务端。

JavaScript现在的意义(应用场景)

JavaScript 发展到现在几乎无所不能。

  1. 网页特效 *
  2. 服务端开发(Node.js) *
  3. 命令行工具(Node.js)
  4. 桌面程序(Electron)
  5. App(Cordova)
  6. 控制硬件-物联网(Ruff)
  7. 游戏开发(cocos2d-js)

1.2 发展及历史

1.1.1

1994年Netscape公司推出免费版本浏览器 Netscape Navigator(网景浏览器1.0)

1995年微软公司发布 Internet Explorer 1.0

1995年网景公司为适应市场变化,需要开发一门专门在浏览器运行的脚本语言,这个任务交给了布兰登,为了应付公司安排的任务, 他只用10天时间就提交了工作,并将这门语言命名为 LiveScript;

后来为了蹭sun公司java的热度,与sun公司合作,将其临时改名为“JavaScript”;

1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript,首先内置于IE 3.0;

1997年7月,ECMA组织发布ECMAScript 1.0版;

此后,明争暗斗不断,1998年6月,ECMAScript 2.0版发布,1999年12月,ECMAScript 3.0版发布;

2007年10月,ECMAScript 4.0版草案发布,2008年7月中止ECMAScript 4.0的开发,并发布3.1版本;

会后不久,ECMAScript 3.1就改名为ECMAScript 5

2011年6月,ECMAscript 5.1版发布,现在使用最为广泛的版本 版发布,现在使用最为广泛的版本;

2015年6月,ECMAScript 6正式发布,并且更名为“ECMAScript 2015”;

随后,ECMA组织决定,每年发布一个升级版本,以年号来代替版本号,如:ECMAScript 2016、ECMAScript 2017;

另外: 1996年,样式表标准CSS第一版发布;

1997年,DOM模式第一版正式应用,目前的通用版本是DOM3,下一代版本DOM 4正在拟定中

1999年,IE5部署了XMLHttpRequest接口,允许JavaScript发出HTTP请求;

2001年,提出了JSON格式,用于取代XML格式。

2002年,Mozilla项目发布第一版Firefox。

2003年,苹果公司发布了Safari浏览器的第一版。

2006年,jQuery函数库诞生

2007年,Webkit引擎在iPhone手机中得到部署;

2008年,为Chrome浏览器而开发的V8编译器(解析引擎)诞生;

2009年,基于V8解析引擎的Node.js项目诞生,迎来前后端JS的霸权时代;

2009年,Google发布Chrome OS

2009年,Google发布Angular框架;

2013年,Mozilla基金会发布手机操作系统Firefox OS,该操作系统的整个用户界面都使用JavaScript;

2013年5月,Facebook发布UI框架库React;

2014年,尤雨溪发布开源前端开发库Vue.js;

2015年3月,Facebook公司发布了 React Native项目;

1.3 JavaScript和HTML、CSS

  1. HTML:提供网页的结构,提供网页中的内容

  2. CSS: 用来样式排版、美化网页

  3. JavaScript: 可以用来控制网页内容,给网页增加动态的效果

1.4 JavaScript的组成

ECMA 欧洲计算机制造联合会; ECMAScript 是一套标准,定义了一种语言的标准,规定了基本语法、数据类型、关键字、具体API的设计规范等,解析引擎设计的参考标准,但与具体实现无关;

1496912475691

1.4.1 ECMAScript - JavaScript的核心

ECMAScript是一套语法标准,描述了JavaScript语言的基本语法和数据类型,是JavaScript的核心。 ES5 ES6

1.4.2 BOM - 浏览器对象模型

一套操作浏览器功能的API

通过BOM可以操作浏览器窗口,比如:弹出框、控制浏览器跳转、获取分辨率等

1.4.3 DOM - 文档对象模型

一套操作页面元素的API

DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作

1.5 JS学习概况

我们在学习JS时,需要学习的内容分为两部分,语言结构宿主环境提供的API;

语言结构部分主要时语言规则及内置对象;

而宿主环境的API,根据宿主环境不同而不同,以浏览器为例(js还可以运行在服务器/操作系统),最常见的三个类型: 浏览器控制类、DOM操作类、网络控制类;

1.1.5

总结:

JavaScript编程语言简称 JS,是一种嵌入式的脚本语言,应用范围及其广泛,由布兰登-艾奇开发,在20+年的发展中历经沧桑,学习 JS 分为语言规则及宿主环境两部分;

2.1 如何写一段JS代码并运行

  • 写在行内
01.html: 
<input type="button" value="按钮" onclick="alert('Hello World')" />
  • 写在script标签中 *
02.html:
<head>
  <script>
    alert('Hello World!');
  </script>
</head>
  • 写在外部js文件中,在页面引入
03.html:
<script src="main.js"></script>
main.js:

alert('Hello World!');

注意点: 引用外部js文件的 script 标签中不可以再写JavaScript代码,即使写了也不会执行,没有作用

温馨提示:

下面开始进入 JS 基础语法的学习,可能非常枯燥,别睡着……

音乐很优美很动听,但学五线谱真的是乏味无聊痛苦不堪;

2.3 变量

2.3.1 什么是变量

  • 什么是变量

    变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据

  • 为什么要使用变量

    使用变量可以方便的获取或者修改内存中的数据

总结:变量就是存储数据的容器

2.3.2 如何使用变量

  • var声明变量
var age;
  • 变量的赋值
var age;
age = 18;
  • 同时声明多个变量
var age, name, sex;
age = 10;
name = 'zs';
  • 同时声明多个变量并赋值
var age = 10, name = 'zs';

2.3.3 变量的命名规则和规范

  • 规则 - 必须遵守的,不遵守会报错

    • 由字母、数字、下划线、$符号组成,且不能以数字开头

    • 区分大小写

    • 不能是关键字和保留字,例如:for、while。

snipaste_20190410_235255

  • 规范 - 建议遵守的,不遵守不会报错

    • 变量名必须有意义
    • 遵守驼峰命名法。(首字母小写,后面单词的首字母需要大写。例如:userName、userPassword)
  • 下面哪些变量名不合法

    a	    
    1
    age18
    18age
    name
    $
    $name
    _sex
    &sex
    theworld  
    theWorld
    

name变量名,本身不是保留字/关键字, 建议少用。 name在有的浏览器中,是自动声明过的。

2.3.4 案例

  1. 交换两个变量的值
var a = '1';
var b = '2';
//  借助第三个变量
var c = a;
a=b;
b=c;
console.log(a,b);
  1. 不使用临时变量,交换两个数值变量的值
//第二种方式
var num1 = 10;
var num2 = 20;
//计算的方式:累加,然后相减
num1 = num1 + num2;//num1的结果是30
num2 = num1 - num2;//num2的结果是10
num1 = num1 - num2;//num1的结果是20
console.log(num1);
console.log(num2);

2.3.5 代码调试(输出变量)

  1. alert 弹框 :浏览器页面弹框
var num1 = 10;
alert(num1);
  1. console.log() 浏览器console控制台
var num1 = 10;
var num2 = 20;
console.log(num1);
console.log(num1, num2);
  1. document.write() 浏览器页面中
var num1 = 10;
document.write(num1);

2.4 数据类型

2.4.1 简单数据类型

Number、String、Boolean、Undefined、Null

获取变量的类型

typeof

var age = 18;
console.log(typeof age);  // 'number'

Number类型

  • 数值字面量:数值的固定值的表示法(数值直接量)

    110 1024 60.5

  • 浮点数(小数)

  • 浮点数的精度问题

    浮点数
    	var n = 5e-324;   // 科学计数法  5乘以10的-324次方  
    浮点数值的最高精度是 17 位小数,但在进行算术计算时其精确度远远不如整数
       var result = 0.1 + 0.2;    // 结果不是 0.3,而是:0.30000000000000004
       console.log(0.07 * 100);
       不要判断两个浮点数是否相等
    
  • 数值范围

    最小值:Number.MIN_VALUE,// 这个值为: 5e-324  5乘以10的-324次方
    最大值:Number.MAX_VALUE,// 这个值为: 1.7976931348623157e+308
    无穷大:Infinity
    无穷小:-Infinity
    

String类型

'abc' "abc" 单双引号引起来的一连串字符

  • 字符串字面量(直接量)

    '程序猿','程序媛', "全栈程序猿"

思考:如何打印以下字符串

我是一个 "正直" 的人

我很喜欢 "全栈 '程序猿' "

注: 转义后单双引号 只能 就近和转义后的单双引号进行配对

  • 转义符

1498289626813

注: \b 退格符 \f又叫走纸或进纸或 换页符

var s = '我很喜欢   \"全栈  \'程序猿\'  \"';
console.log(s);
  • 字符串长度

length属性用来获取字符串的长度

var str = '黑马程序猿 Hello World';
console.log(str.length);
  • 字符串拼接

字符串拼接使用 + 连接

console.log(11 + 11);
console.log('hello' + ' world');
console.log('100' + '100');
console.log('11' + 11);
console.log('male:' + true);
  1. 两边只要有一个是字符串,那么+就是字符串拼接功能
  2. 两边如果都是数字,那么就是算术功能。

Boolean类型

  • Boolean字面量: true和false,区分大小写
  • 计算机内部存储:true为1,false为0

Undefined和Null

  1. undefined表示一个声明了没有赋值的变量,变量只声明的时候值默认是undefined
  2. null表示一个空,变量的值如果想为null,必须手动设置

注: 关于undefined和null是一个面试中很容易被问到的问题

2.4.2 复杂数据类型

Object 对象:保存很多数据的一种数据类型

后面详解;

题外话

如何使用谷歌浏览器,快速的查看数据类型?

字符串的颜色是黑色的,数值类型是蓝色的,布尔类型也是蓝色的,undefined和null是灰色的

console.log('ss',2,null,undefined,true);

2.5 注释

被注释的内容是不执行的,不管什么内容都不会运行;

单行注释

用来描述下面一个或多行代码的作用

// 这是一个变量
var name = 'hm';

多行注释

用来注释多条代码

/*
var age = 18;
var name = 'zs';
console.log(name, age);
*/

总结:

JS代码的书写,变量的声明方式,数据类型,注释;

3.1 转换成字符串类型

  • toString()

    var num = 5;
    console.log(num.toString());
    
  • String()

    var s = null;
    console.log(s.toString());
    console.log(String(s));
    
    // String()函数存在的意义:有些值没有toString(),
    // 这个时候可以使用String()。比如:undefined和null
    
  • 拼接字符串方式

    num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串

3.2 转换成数值类型

  • Number()

    var a = Number('1');
    var b = Number(1);
    var c = Number('c');
    var d = Number(null);
    var e = Number(undefined);
    
    console.log(a,b,c,d,e); // 1 1 NaN 0 NaN
    
    // Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
    
  • parseInt()

    var a = parseInt('1.2df');
    var b = parseInt(1);
    var c = parseInt('c12');
    var d = parseInt(null);
    var e = parseInt(undefined);
    
    console.log(a,b,c,d,e); //1 1 NaN NaN NaN
    
    // 如果第一个字符是数字会解析,直到遇到非数字结束
    // 如果第一个字符不是数字或者符号就返回NaN
    
  • isNaN()

    语法:isNaN(n)
    功能:检测n是否是“非数值” 返回值:boolean
    参数:参数n可以是任何类型
    说明:isNaN()在接收到一个值之后,会尝试将这个值转换为数值。
    某些不是数值的值会直接转换为数值。
    
  • parseFloat()

    var a = parseFloat('1.2df');
    var b = parseFloat('1.3.4');
    var c = parseFloat('c12');
    var d = parseFloat(null);
    var e = parseFloat(undefined);
    
    console.log(a,b,c,d,e); //1.2 1.3 NaN NaN NaN
    
    // parseFloat() 把字符串转换成浮点数
    // parseFloat()和parseInt非常相似,
    // 不同之处在与parseFloat会解析第一个 . 遇到第二个.或者非数字结束
    // 如果解析的内容里只有整数,解析成整数
    
  • +,-,-0 等运算

    var str = '500';
    console.log(+str);		// 取正
    console.log(-str);		// 取负
    console.log(str - 0);   
    

总结:有3个函数可以把非数值转换为数值:Number()、parseInt()和 parseFloat()。其中Number()可以用于任何数据类型,而parse Int()和parseFloat()则专门用于把字符串转换成数值。

3.3 转换成布尔类型

  • Boolean()
var a = Boolean('0');
var b = Boolean(0);
var c = Boolean('1');
var d = Boolean(null);
var e = Boolean(undefined);
var f = Boolean(NaN);

console.log(a,b,c,d,e,f); //true false true false false false

// 0、''(空字符串) 、null、 undefined 、NaN 会转换成false  其它都会转换成true

总结:

1、除0之外的所有数字,转换为布尔型都为true

2、除””之外的所有字符,转换为布尔型都为true

3、null和undefined转换为布尔型为false

JS操作符

表达式:将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义的式子称为表达式

同时,表达式中的每个数值及部分表达式,又称为 子表达式

Snipaste_2019-02-19_20-27-30

4.1 算术运算符

+ - * / %  取余(取模)

4.2 一元运算符 *

一元运算符:只有一个操作数的运算符,一元运算会直接修改原始变量的数据;

5 + 6 两个操作数的运算符 二元运算符

++ 自身加 (自增)

-- 自身减 (自减)

  • 前置++

    var num1 = 5;
    ++ num1; 
    
    var num2 = 6;
    console.log(num1 + ++ num2); //13
    
  • 后置++

    var num1 = 5;
    num1 ++;    
    var num2 = 6 
    console.log(num1 + num2 ++); //12
    
  • 猜猜看

    var a = 1; 
    var b = ++a + ++a; 
    console.log(b); //5
    
    var a = 1; 
    var b = a++ + ++a; 
    console.log(b);//4
    
    var a = 1; 
    var b = a++ + a++; 
    // console.log(b);  // 3
    
    var a = 1; 
    var b = ++a + a++; 
    console.log(b);//4
    

总结

前置++:先加1,后参与运算

后置++:先参与运算,后加1

后置++ 运算的两个条件,满其一就会执行

1:整个表达式结束;2:表达式没结束但是又被使用了;

上面两个理解后,下面两个自通

前置-- :先减1,后参与运算 g 后置-- :先参与运算,后减1

4.3 逻辑运算符(布尔运算符) *

&& 与 左边为真则取右边,左边为假则取左边
|| 或 左边为真则取左边,左边为假则边右边
!  非  取反
var a = 1;
var b = 2;
var c = 0;

console.log(a || b); //1
console.log(b || a); //2
console.log(c && a); //0
console.log(a || c && b); //1

// JS逻辑运算中的逻辑或和逻辑与的运算结果:
// 决定整个表达式的子表达式的值

4.4 关系运算符(比较运算符)

<  >  >=  <= == != === !==
==与===的区别:==只进行值得比较,===类型和值同时相等,则相等

var result = '55' == 55;  	// true
var result = '55' === 55; 	// false 值相等,类型不相等
var result = 55 === 55; 	// true

4.5 赋值运算符

注意与数学符号的差别;

= += -= *= /= %=

例如:
var num = 0;
num += 5;	//相当于  num = num + 5;

4.6 三元运算符

语法:

条件 ? 执行代码1:执行代码2

说明:

可代替简单的if语句,
如果条件成立,执行代码1,否则执行代码2

4.7 运算符的优先级

20190406_225056

优先级从高到底
1. ()  优先级最高
2. 一元运算符  ++   --   !
3. 算数运算符  先*  /  %   后 +   -
4. 关系运算符  >   >=   <   <=
5. 相等运算符   ==   !=    ===    !==
6. 逻辑运算符 先&&   后||
7. 赋值运算符
// 练习1:
var s = 4 >= 6 || '人' != '阿凡达' && !(12 * 2 == 144) && true
console.log(s); //true

// 练习2:
var num = 10;
var f = 5 == num / 2 && (2 + 2 * num)
console.log(f.toString() === 22) //false

总结:

操作符的使用,基本数学运算,一元运算符自增自减及前置后置的区别,逻辑运算符及取值,关系比较运算符,赋值运算符,运算符优先级;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值