08.05自我总结

JavaScript

一.概念

JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制html代码的交互功能以及前台数据处理的业务逻辑(js语言代码也可以直接写在html文件中),采用的ECMAScript语法,属于编程语言。

ECMAScript目前普遍使用的存在ES5与ES6两个版本

二.js的引入

  • 行间式:js代码直接书写在标签的钩子事件中
<div id="box" onclick="this.style.backgroundColor = 'red'"></div>
  • 内联式:js代码书写在script标签中,script需要放置在body的最下方,也可以放在head和要找的元素下面
<script>
box.style.backgroundColor = 'pink'
</script>
  • 外链式: 链接了外部js的script标签,就相当于单标签,内部代码块会自动屏蔽
<script src="js/外联.js">

js/外联.js

box.style.background = 'blue'

三.js的基础语法

变量

// 关键字 变量名 = 变量值
// 关键字四种:不写也相当于定义一个window.变量名的变量 | var | let | const
n1 = 10; // 全局变量
// console.log(n1);
var n2 = 20; // 局部变量
// alert(n2);
let n3 = 30; // 块级变量
// document.write(n3);
const N4 = 40; // 常量
// console.log(N4);
// N4 = 50; // 报错,常量值不能修改

数据类型

// 值类型
// 1) 数字类型:number
var num1 = 10;
var num2 = 3.14;
console.log(num1, num2);
console.log(typeof(num1), typeof num2); // 2) 字符串类型:string
var s1 = '单引号的字符串';
var s2 = "双引号的字符串";
console.log(s1, s2);
console.log(typeof s1, typeof s2);
var s3 = `多行字符串:
再来一行`;
console.log(typeof s3, s3); // 3) 布尔类型:boolean
var b1 = true;
var b2 = false;
console.log(b1, b2);
console.log(typeof b1, typeof b2);
// console.log(true + true); // 1+1 // 4) 未定义类型:undefined
var owen;
console.log(owen);
var nick = undefined;
console.log(nick); // 引用类型
// 5) 对象类型
var obj = new Object();
console.log(typeof obj, obj);
var obj2 = {};
console.log(typeof obj2, obj2); // 6) 函数类型
var fn = function () {};
console.log(typeof fn, fn); // 其它
// 7) 空类型
var jerry = null;
console.log(typeof jerry, jerry); // 8) 数组
var arr = [1, 3, 2, 5, 4];
console.log(typeof arr, arr); // 9) 时间
var date = new Date();
console.log(typeof date, date);

随机数

// 随机数: Math.random() - (0, 1)
// console.log(Math.random()); // 正整数区间[m, n]
// (0, 1) * 10 => (0, 10) 取值parseInt() => [0, 9] + 5 => [5, 14]
// parseInt(Math.random() * 11) + 5 => [5, 15]
// [m, n] => +的值就是m,*的值 n - m + 1 // parseInt(Math.random() * (n - m + 1)) + m => [m, n]
var r_num = parseInt(Math.random() * (14 - 7 + 1)) + 7;
console.log(r_num); // (0, 1) * 超大的数 取整
// 一个正整数 % num => [0, num-1] + m => [m, num-1+m] => n = num+m-1 => num = n-m+1
// 一个正整数 % (n-m+1) + m => [m, n]
var random_num = parseInt( Math.random() * 10000000000 % (14 - 7 + 1) ) + 7;
console.log(random_num)

运算符:详情见课件

// 1)算术运算符:+ - * / % ++ -- | += ...
console.log(5 / 2); // 2.5
console.log(parseInt(5 / 2));
console.log(parseFloat(5 / 2)); // parseInt | parseFloat 可以完成 string => number
res = parseInt('3.14.15abc');
console.log(res); // 从头往后找整数部分 res = parseFloat('3.14.15abc');
console.log(res); // 从头往后找小数部分(最多只识别一个小数点) res = parseInt('a3.14.15abc'); // NaN
console.log(typeof res, res); // 2) 弱语言类型的js
res = 10 + '5';
console.log(res); // 字符串:105
res = 10 - '5';
console.log(res); // 数字:5
// 数字 => 字符串
res = '' + 5;
console.log(typeof res, res);
// 字符串 => 数字
res = +'5';
console.log(typeof res, res); // 3) 自增自减
num = 10;
num += 1;
console.log(num);
num++;
console.log(num);
num--;
console.log(num);
// 了解:符号 在前优先级高于一切运算符,在后优先级比赋值符还低
// ++在前先自增再运算;++在后先运算再自增
num = 10;
res = num++;
console.log(num, res); num = 10;
res = ++num;
console.log(num, res); // 4) 比较运算符的比较
console.log(5 == '5'); // true,只做值比较
console.log(5 === '5'); // false,做值与类型比较
console.log(5 != '5'); // false,只做值比较
console.log(5 !== '5'); // true,做值与类型比较 // 5)逻辑运算符 && || !
console.log(true && true);
console.log(false || false);
console.log(!true);
// 短路现象
// &&: 有假则假,前为假,后不用判断
num = 10;
console.log(false && ++num); // num++ | ++num 都被短路不会被执行
console.log(num); console.log(true || ++num); // num++ | ++num 都被短路不会被执行
console.log(num); // 6)三元运算符(三目运算符)
// 条件 ? 结果1 : 结果2
res = 5 == '5' ? '值相等':'值不等';
console.log(res);

分支结构

// 1)if分支结构
/* python
* if 条件:
* 代码块1
* elif 条件:
* 代码块2
* else:
* 代码块3
* */
/** js
* if (条件) {
* 代码块1
* }
* else if (条件) {
* 代码块2
* }
* else {
* 代码块3
* }
*/
var num = parseInt(Math.random() * 16);
console.log(num);
if (num > 10) {
console.log("产生的数超过10")
} else if (5 <= num && num <= 10) {
console.log("产生的数间于5~10")
} else {
console.log("产生的数不超过5")
} // 2)switch分支结构
/*
month = parseInt(Math.random() * (2 - 0 + 1)) + 0;
console.log(month);
switch (month) {
case 1:
console.log('1月31天');
break; // 用来结束case,跳出switch分支结构
case 2:
console.log('2月28天');
break;
default: // 没有走任何case,会进入default分支
console.log('月份参数有误');
}
*/
month = parseInt(Math.random() * (12 - 1 + 1)) + 1;
console.log(month);
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log('%s月31天', month);
break; // 用来结束case,跳出switch分支结构,多个分支可以共享一个break
case 2:
console.log('2月28天');
break;
case 4:
case 6:
case 9:
case 11:
console.log('%s月30天', month);
break;
default: // 没有走任何case,会进入default分支,没有错误的情况可以省略
console.log('月份参数有误');
}

循环结构

// 1) for循环
/*
for (循环变量①; 条件表达式②; 增量③) { 循环体④ } 生命周期:① ②④③...②④③ ②
*/
// 1~10直接的偶数
for (var i = 1; i <= 10; i++) {
if (i % 2 === 0) {
console.log(i);
}
}
// continue | break
// 1 2 4 5
for (var i = 1; i <= 5; i++) {
if (i === 3) continue;
console.log(i)
}
// 1 2 3
for (var i = 1; i <= 5; i++) {
if (i > 3) break;
console.log(i)
} // 了解
var i = 1;
for (; i <= 5;) {
console.log(i);
i++
} // 2)while
var i = 1;
while (i <= 5) {
console.log(i);
i++;
} // 3)do...while循环:先执行一次循环体,再判断条件
var num = 90;
do {
console.log(num);
num++;
} while (num <= 100); // for:解决知道循环次数的循环 // while:
// 解决一切for与do...while能解决的问题(结合函数的思想)
// 解决不知道循环次数的循环(循环用break结合) // do...while:完成循环体必须要提前执行一次的循环

函数

函数概况
/* 函数
定义:
关键字 函数名(参数列表) {
函数体;
返回值
}
var 函数名 = 关键字(参数列表) {
函数体;
返回值
}
var 函数名 = (参数列表) => {
函数体;
返回值
} 函数成员:
函数名:函数名存放的就是函数的地址
通过 函数名() 调用函数的 参数列表:将外界资源传给内部的桥梁
你传你的,我收我的,用...接收可变长 函数体:解决需求的代码块
功能代码块 返回值:将内部数据反馈给外部
只能返回一个值,不写或空return返回undefined 匿名函数:
没有声明名字的函数
产生一个局部作用域
资源回收快
*/
有名函数
// 定义
function add(n1, n2) {
return n1 + n2
}
// 使用
res = add(10, 20);
console.log(res); // 函数名的运用
my_add = add;
console.log(my_add(100, 200)); // 参数列表:你传你的,我收我的,用...接收可变长
// 少传未接收到的形参赋值为undefined,多传的实参自动被丢弃
function fn(n1, n2) {
console.log('传输的n1:%s | n2:%s', n1, n2)
}
fn(10, 20);
fn();
fn(100);
fn(1000, 2000, 3000); // 可变长参数
function func(...num) {
console.log(num)
}
func(1, 2, 5, 3, 4);
匿名函数
// 匿名函数
// 匿名函数的自调用 - 调用一次后就会被回收资源
(function () {
console.log('匿名函数')
})(); // 用变量接收 - 函数的第二种声明方式
var fun = function () {
console.log('函数的第二种声明方式')
};
fun(); // 函数的第三种声明方式
var fun2 = (n1, n2) => { // 有函数体标明{}
console.log('n1:%s | n2:%s', n1, n2);
return n1 + n2
};
console.log(fun2(222, 444)); var fun3 = (n1, n2) => n1 + n2; // 只有返回值可以省略{}
console.log(fun3(222, 444));
匿名函数的局部作用域作用
// 匿名函数自调用,可以产生局部作用域与外界隔离
(function () {
let number = 888
})()
// console.log(number) // 外界不可以直接访问

四种变量分析

function fn() {
n1 = 10; // 只有全局变量外界才能访问
var n2 = 20;
let n3 = 30;
const n4 = 40;
}
fn();
console.log(n1); if (true) { // 块级作用域
n1 = 10;
var n2 = 20;
let n3 = 30; // let与const声明的变量右块级作用域
const n4 = 40; // 常量
}
console.log(n1);
console.log(n2);
{
let aaa = 10
}

数据类型的使用

字符串

// string => str
// 1)声明
// 单引号 | 双引号 | 反引号 // 2)字符串拼接
res = 'you are' + ' ' + 'good man!';
console.log(res); // 3)字符串的切片
s = 'you are good man!';
n_s = s.slice(8, 12);
console.log(n_s); // good // 4)字符串替换
s = 'you are good man!';
n_s = s.replace('man', 'woman');
console.log(n_s); // 5)字符串拆分
s = 'you are good man!';
res = s.split(' ');
console.log(res); // 6)字符串迭代
s = 'abcdef';
for (num of s) {
console.log(num)
}

数组

// array => list
// 1)声明
arr = [1, 4, 2, 3, 5];
console.log(arr);
// 2)反转
arr.reverse();
console.log(arr);
// 3)组合
str = arr.join('@');
console.log(str);
// 4)切片
new_arr = arr.slice(1, 4);
console.log(new_arr);
// 5)排序
arr.sort();
console.log(arr);
// 6)增删改查
// 查:只有正向索引
console.log(arr[2]);
// 增
arr.push(888); // 尾增
console.log(arr);
arr.unshift(666); // 首增
console.log(arr);
// 删
res = arr.pop(); // 尾删
console.log(arr, res);
res = arr.shift(); // 首删
console.log(arr, res); // 增删改 综合方法:splice
// 三个参数:开始操作的索引 操作的位数 操作的结果(可变长)
arr = [1, 2, 3, 4, 5];
// 数组长度:arr.length
arr.splice(arr.length, 0, 666, 888);
console.log(arr);

字典

// object => dict
// 1)定义
height = 180;
dic = {
'name': 'Owen', // 本质是对象
age: 18, // 所有的key(属性名)都是字符串类型,所以可以省略引号
height, // 当value为变量,且变量名与key同名,可以省略value
};
console.log(dic); // 2)访问
console.log(dic.name);
console.log(dic['age']); // 3)增删改
// 增
dic.sex = '男';
console.log(dic);
// 删
delete dic.sex;
console.log(dic);
// 改
dic.name = 'Nick';
console.log(dic);

概括

1、js变量:不写 | var | let | const

2、js的基本数据类型:值类型:number | string | boolean | undefined 引用类型:object | function 其它: null | Array | Date

3、随机数:parseInt(Math.random() * (n - m + 1)) + m

4、类型转换:"" + number => string | +string => number | parseInt(string) => number

5、运算符:/ | ++ | === | &&、||、! | 条件? 结果1:结果2

6、类型的运用:string | [1, 2, 3] splice(index, count, args) | {}

7、流程控制

8、函数

function 函数名(){}

var 函数名 = function (){}

let 函数名 = () => {}

JavaScript的概念,引入,基本数据类型的更多相关文章

  1. JavaScript基本概念(二)

    JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...

  2. 《JavaScript核心概念》基础部分重点摘录

    注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...

  3. 第一百零七节,JavaScript基本包装类型,数据类型的方法

    JavaScript基本包装类型,数据类型的方法 学习要点: 1.基本包装类型概述 2.Boolean类型 3.Number类型 4.String类型 为了便于操作基本类型值,ECMAScript提供 ...

  4. JavaScript的5中基本数据类型

    javascript的5种基本数据类型有: Undefined,Null,Bollean,Number,String,1种复杂数据类型:Object. 1Boolean类型 将一个值转换为Bollea ...

  5. javascript的typeof返回哪些数据类型

    javascript的typeof返回哪些数据类型 1.返回数据类型 undefined string boolean number symbol(ES6) Object Function 2.强制类 ...

  6. javascript中五种基本数据类型

    前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...

  7. Javascript一(变量,数据类型,正则表达式,数据,语句)

    本文章适合具有一定程序编程语言基础的人士阅读,最好学完Java基础再来阅读本文章更容易理解语言初学者会看起来比较费劲,不易理解 一.导入脚本 在html导入Javascript的格式是: <sc ...

  8. 【14】javascript有哪几种数据类型

    javascript有哪几种数据类型 六种基本数据类型 undefined null string boolean number symbol(ES6) 一种引用类型 Object **

  9. 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...

随机推荐

  1. html5 中video标签属性

      <video id="haoroomsvideo" src="haorooms.mp4" poster="images/haorooms.j ...

  2. go 利用chan的阻塞机制,实现协程的开始、阻塞、返回控制器

    一.使用场景 大背景是从kafka 中读取oplog进行增量处理,但是当我想发一条命令将这个增量过程阻塞,然后开始进行一次全量同步之后,在开始继续增量. 所以需要对多个协程进行控制. 二.使用知识 1 ...

  3. Day01-基础数据类型/用户交互/流程控制之-if

    1.基础数据类型 什么是数据类型 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘ ...

  4. Node.js+Express+MongoDB数据库实现网页注册登入功能

    通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.h ...

  5. JS---DOM---事件冒泡和阻止事件冒泡,总结事件

    事件冒泡: 多个元素嵌套, 有层次关系 ,这些元素都注册了相同的事件, 如果里面的元素的事件触发了, 外面的元素的该事件自动的触发了     事件有三个阶段: 1.事件捕获阶段  :从外向内 2.事件 ...

  6. Axure5.1.0.1699 RP汉化版

    Axure是一款产品原型(Prototype)设计软件,可通过这个软件编辑一些常见的事件和在特点条件下才会触发的情况,可以快速的生成HTML Demo页面. 使用Axure的用户很多,据淘宝UED消息 ...

  7. Appium(九):Appium API(三) 滑动和拖拽、高级手势、手机操作

    1. 滑动和拖拽 我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指的滑动,也就是接下来要学的滑动和拖拽了. 1.1 swipe滑动事件 从一个坐标位置滑 ...

  8. 解决video.js不兼容ie8问题

    使用视频播放器的时候,常常会让兼容一些浏览器问题,比如兼容ie8浏览器.在工作中使用的是video.js. 如果需要兼容,引入两个js库,就可以做到兼容ie8浏览器 <script src=&q ...

  9. SpringCloud Zuul2.X网关实现服务熔断降级(复制即用)

    版本: <properties> <spring-boot.version>.RELEASE</spring-boot.version> <spring-cl ...

  10. 针对windows系统如何解决openssl_pkey_export(): cannot get key from parameter 1这个问题

    为了解决这个问题我百度了很多方法,可是很多方法并没有效果. 方法一: 如果你安装的是phpstudy这个集成环境,那么 1.你就要去php拓展里面去打开php_opemssl中打开这个扩展. 2.去p ...