[TOC]

一.JavaScript介绍

JavaScript 编程语言 流程控制
Netscape在最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。JavaScript最初受Java启发而开始设计的,目的之一就是“看上去像Java”,因此语法上有类似之处,一些名称和命名规范也借自Java。JavaScript与Java名称上的近似,是当时Netscape为了营销考虑与Sun微系统达成协议的结果。Java和JavaScript的关系就像张雨和张雨生的关系,只是名字很像。
Java 服务器端的编程语言
JavaScript 运行在客户端(浏览器)的编程语言

JavaScript是一种运行在客户端脚本语言 JavaScript的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

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

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

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

    2、JavaScript和HTML、CSS的区别

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

  9. CSS: 用来美化网页
  10. JavaScript: 可以用来控制网页内容,给网页增加动态的效果,例如动态创建div,实现页面元素的隐藏。

    3、JavaScript的组成

    js基础快速入门(上)-大湿兄黄泡泡 - 图1

    3.1、ECMAScript - JavaScript的核心

    定义了JavaScript的语法规范
    JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关

    3.2、BOM - 浏览器对象模型

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

    3.3、DOM - 文档对象模型

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

    3.4、JavaScript的书写位置

  • 写在行内
  • 写在script标签中


  • 写在外部js文件中,在页面引入
  • 注意点
    引用外部js文件的script标签中不可以写JavaScript代码

二、变量

1、什么是变量

  • 什么是变量
    变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据
    变量用于描述计算机中的数据存储空间 。
    房屋是一个存储空间
    用来存放特定的东西
    内存,全称内存储器。用于存放计算机运行过程中的数据。
    计算机为了更好的存储数据,将内存分为不同的内存单元。
    js基础快速入门(上)-大湿兄黄泡泡 - 图2
  • 为什么要使用变量
    从内存中取出一个存储单元,存储相应的数据。
    js基础快速入门(上)-大湿兄黄泡泡 - 图3
    为了方便存储数据和取数据,需要明确存储单元识别的方式和使用的用途。
    识别的方式:起名字 age
    使用用途:存放什么内容 18

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

2、如何使用变量

  • var声明变量

var age;

  • 变量的赋值

var age;
age = 18;

  • 同时声明多个变量

var age, name, sex;
age = 10;
name = ‘zs’;

  • 同时声明多个变量并赋值

var age = 10, name = ‘zs’;

3、变量在内存中的存储

js基础快速入门(上)-大湿兄黄泡泡 - 图4

4、变量的命名规则和规范

  • 规则 - 必须遵守的,不遵守会报错
    • 由字母、数字、下划线、$符号组成,不能以数字开头
    • 不能是关键字和保留字,例如:for、while。
    • 区分大小写
  • 规范 - 建议遵守的,不遵守不会报错

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

    下面哪些变量名不合法
    a
    1
    age18
    18age
    name
    $name
    _sex
    &sex
    theworld theWorld

5、交换两个变量中的值(案例)

三、数据类型

数据类型分为,“简单数据类型”和“复杂数据类型”,现在我们先学习“简单的数据类型”
简单数据类型
Number、String、Boolean、Undefined、Null

1、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);
不要判断两个浮点数是否相等
数值判断

  • NaN:not a number
    • NaN 与任何值都不相等,包括他本身
      在控制台中使用 6*’abc’ 可以输出NaN
  • isNaN: is not a number
    是数字返回为false.
    不是数字返回true.

    2、String类型

    字符串
    ‘abc’ “abc”
    ‘程序猿’,’程序媛’, “黑马程序猿”
    思考:如何打印以下字符串。我是一个”正直”的人 我很喜欢”黑马’程序猿’”

    2.2.1 转义符

    js基础快速入门(上)-大湿兄黄泡泡 - 图5

js基础快速入门(上)-大湿兄黄泡泡 - 图6

2.2.2 字符串长度

length属性用来获取字符串的长度
var str = ‘黑马程序猿 Hello World’;
console.log(str.length);

2.2.3 字符串拼接

字符串拼接使用 + 连接
console.log(11 + 11);
console.log(‘hello’ + ‘ world’);
console.log(‘100’ + ‘100’);
console.log(‘11’ + 11);
console.log(‘male:’ + true);

  1. 两边只要有一个是字符串,那么+就是字符串拼接功能
  2. 两边如果都是数字,那么就是算术功能。

    3、Boolean类型

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

    4、Undefined和Null

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

    5、获取变量的类型

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

    四、注释

    4.1 单行注释

    用来描述下面一个或多行代码的作用
    // 这是一个变量
    var name = ‘hm’;

    4.2 多行注释

    用来注释多条代码
    /
    var age = 18;
    var name = ‘zs’;
    console.log(name, age);
    /

    五、操作符

    5.1 算术运算符

      • / %

        5.2 一元运算符

        一元运算符:只有一个操作数的运算符
        5 + 6 两个操作数的运算符 二元运算符
        ++ 自身加1
        — 自身减1
        前置++
        var num1 = 5;
        ++ num1;
        后置++
        var num1 = 5;
        num1 ++;
        思考题:
        var a = 1;
        var b = ++a + ++a;
        console.log(b); var a = 1;
        var b = a++ + a++;
        console.log(b);

        5.3 逻辑运算符(布尔运算符)

        && 与 两个操作数同时为true,结果为true,否则都是false
        || 或 两个操作数有一个为true,结果为true,否则为false
        ! 非 取反

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

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

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

5.5 赋值运算符

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

5.6 运算符的优先级

优先级从高到底
1. () 优先级最高
2. 一元运算符 ++ — !
3. 算数运算符 先 / % 后 + -
4. 关系运算符 > >= < <=
5. 相等运算符 == != === !==
6. 逻辑运算符 先&& 后||
7. 赋值运算符(4 >= 6) || (’人’ != ‘阿凡达’) && (!(12
2 == 144)) && true
false||true
由于|| 和&& 运算级别最低,因为在该表达式中没有赋值,所以可以加上小括号。

六、流程控制

程序的三种基本结构

顺序结构

从上到下执行的代码就是顺序结构
程序默认就是由上到下顺序执行的

分支结构

根据不同的情况,执行对应代码

循环结构

循环结构:重复做一件事情

6.1 分支结构

if语句

语法结构

if (/ 条件表达式 /) {
// 执行语句
}

if (/ 条件表达式 /){
// 成立执行语句
} else {
// 否则执行语句
}

if (/ 条件1 /){
// 成立执行语句
} else if (/ 条件2 /){
// 成立执行语句
} else if (/ 条件3 /){
// 成立执行语句
} else {
// 最后默认执行语句
}
案例:1、求两个数的最大数 2、判断一个数是偶数还是奇数 3、分数转换,把百分制转换成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A

6.2 循环结构

在javascript中,循环语句有三种,while、do..while、for循环。

while语句

基本语法:
// 当循环条件为true时,执行循环体,
// 当循环条件为false时,结束循环。
while (循环条件) {
//循环体
}
代码示例:
// 计算1-100之间所有数的和
// 初始化变量
var i = 1;
var sum = 0;
// 判断条件
while (i <= 100) {
// 循环体
sum += i;
// 自增
i++;
}
console.log(sum);
案例:打印100以内所有偶数的和(作业1)

do…while语句

do..while循环和while循环非常像,二者经常可以相互替代,但是do..while的特点是不管条件成不成立,都会执行一次。

基础语法:
do {
// 循环体;
} while (循环条件);
代码示例:
// 初始化变量
var i = 1;
var sum = 0;
do {
sum += i;//循环体
i++;//自增
} while (i <= 100);//循环条件

for语句

for循环语法:
// for循环的表达式之间用的是;号分隔的,千万不要写成,
for (初始化表达式1; 判断表达式2; 自增表达式3) {
// 循环体4
}
执行顺序:1243 —— 243 ——-243(直到循环条件变成false)

  1. 初始化表达式
  2. 判断表达式
  3. 自增表达式
  4. 循环体
    案例:
    打印1-100之间所有数求1-100之间所有数的和求1-100之间所有数的平均值
    在控制台打印正方形
    在控制台上打印三角形
    js基础快速入门(上)-大湿兄黄泡泡 - 图7
    (三角形打印作业)
    js基础快速入门(上)-大湿兄黄泡泡 - 图8
    乘法口诀表():
    js基础快速入门(上)-大湿兄黄泡泡 - 图9

js基础快速入门(上)-大湿兄黄泡泡 - 图10

七、数组

为什么要学习数组

之前学习的数据类型,只能存储一个值(比如:Number/String。我们想存储班级中所有学生的姓名,此时该如何存储?

数组的概念

所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。

数组的定义

数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。


通过数组字面量创建数组

// 创建一个空数组
var arr1 = [];
// 创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr2 = [1, 3, 4];
// 创建一个包含2个字符串的数组
var arr3 = [‘a’, ‘c’];

// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;
获取数组元素
数组的取值
// 格式:数组名[下标] 下标又称索引
// 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = [‘red’,, ‘green’, ‘blue’];
arr[0]; // red
arr[2]; // blue
arr[3]; // 这个数组的最大下标为2,因此返回undefined

遍历数组

遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历。

数组遍历的基本语法:
for(var i = 0; i < arr.length; i++) {
// 数组遍历的固定结构
}

数组中新增元素

数组的赋值
// 格式:数组名[下标/索引] = 值;
// 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
var arr = [“red”, “green”, “blue”];
// 把red替换成了yellow
arr[0] = “yellow”;
// 给数组新增加了一个pink的值
arr[3] = “pink”;

案例

求一组数中的所有数的和和平均值

七、数组

7.1、为什么要学习数组

之前学习的数据类型,只能存储一个值(比如:Number/String。我们想存储班级中所有学生的姓名,此时该如何存储?

7.2、数组的概念

所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。

7.3、数组的定义

数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。

通过数组字面量创建数组

// 创建一个空数组
var arr1 = [];
// 创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr2 = [1, 3, 4];
// 创建一个包含2个字符串的数组
var arr3 = [‘a’, ‘c’];

// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;

7.4、获取数组元素

数组的取值
// 格式:数组名[下标] 下标又称索引
// 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = [‘red’,, ‘green’, ‘blue’];
arr[0]; // red
arr[2]; // blue
arr[3]; // 这个数组的最大下标为2,因此返回undefined

7.5、遍历数组

遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历。

数组遍历的基本语法:
for(var i = 0; i < arr.length; i++) {
// 数组遍历的固定结构
}

7.6、数组中新增元素

数组的赋值
// 格式:数组名[下标/索引] = 值;
// 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
var arr = [“red”, “green”, “blue”];
// 把red替换成了yellow
arr[0] = “yellow”;
// 给数组新增加了一个pink的值
arr[3] = “pink”;

7.7、案例

求一组数中的所有数的和和平均值

八、函数

一、为什么要有函数

如果要在多个地方求1-100之间所有数的和,应该怎么做?

二、什么是函数

把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用 函数的作用就是封装一段代码,将来可以重复使用

8.1 函数的定义

函数声明
function 函数名() {
// 函数体
}
特点:
函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行。函数一般都用来干一件事情,函数名称一般使用动词

8.2 函数的调用

  • 调用函数的语法:

函数名();

  • 特点:
    函数体只有在调用的时候才会执行,调用需要()进行调用。可以调用多次(重复使用)
    代码示例:

// 声明函数
function sayHi() {
console.log(“吃了没?”);
}
// 调用函数
sayHi();

// 求1-100之间所有数的和
function getSum() {
var sum = 0;
for (var i = 0; i < 100; i++) {
sum += i;
}
console.log(sum);
}
// 调用
getSum();

8.3 函数的参数

为什么要有参数
function getSum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log();
}

// 虽然上面代码可以重复调用,但是只能计算1-100之间的值
// 如果想要计算n-m之间所有数的和,应该怎么办呢?
语法:
// 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部
// 带参数的函数声明
function 函数名(形参1, 形参2, 形参3…) {
// 函数体
}

// 带参数的函数调用
函数名(实参1, 实参2, 实参3);
形参1 = 实参1
形参2 = 实参2
形参和实参

  1. 形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
  2. 实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。

var x = 5, y = 6;
fn(x,y);
function fn(a, b) {
console.log(a + b);
}

案例
求n-m之间所有数的和(作业1)
n=100
m=200
function getSum(n,m){
}

8.4 函数的返回值

函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个返回值
返回值语法:
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参3…) {
//函数体
return 返回值;
}

//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3…);
函数的调用结果就是返回值,因此我们可以直接对函数调用结果进行操作。

案例

  • 求组数中的最大值
  • 求组数中的最小值(作业2)

返回值详解:
如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。


js基础快速入门(上)-大湿兄黄泡泡 - 图11