day 45 小结

------------恢复内容开始------------

js的引入方式

​ 1.内联式: script标签内部直接写

<script>
	alert('页面加载中!')
</script>

​ 2.外联式: 通过script标签src书写 引入外部js文件

<script src="js/my.js">
    /*不要再此写JS代码,原因是用来引入外部js文件的script标签,标签内部书写的js代码不起作用*/
</script>

​ 3.行间式: 写在全局属性中

<div onclick="alert('点击我完成页面交互!')">
    点我
</div>

注释:

//单行注释

/*
多行注释
*/

js里面的变量

​ 在js中声明变量需要使用关键字
​ var 声明的是全局有效
​ let 可以只在局部有效(ES6新语法)

var name = 'json'
let name = 'json'

​ js中变量的命名规范
​ 1.数字 字母 下划线 $
​ 2.不能用关键字作为变量名
​ 3.推荐使用驼峰体命名
​ python推荐使用下划线(c++)
​ user_name

​ js推荐使用驼峰体(前端)
​ UserName

​ js代码默认是以分号作为结束符(你不写通常情况下没有问题)

​ 注意: 变量名是区分大小写的

​ const 用来声明常量, 一旦声明, 其值就不能改变

const PI = 3.1415926

PI = 3
//Uncaught TypeError: Assignment to constant variable.

​ JavaScript 拥有动态类型

var	x;	//此时x是undefined
var x = 1;	//此时x是数字
var	x = "jason";	//此时x是字符串
typeof(x);	//string

​ typeof(x) 用来查看js数据类型

​ console.log(x) 用来打印

数值类型

​ JavaScript不区分整型和浮点型 就一种数字类型

var a = 12.34;
var b = 20;
var c = 123e5;	//12300000
var d = 123e-5;	//0.00123

​ 还有一种NaN 表示不是一个数字(Not a Number)

parseInt("123");	//123
parseInt("ABC");	//返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456");	//123.456

字符串

var a = "hello";
var b = "word";
var c = a + b;
console.log(c);	//helloword

常用方法:

方法 说明
.length 返回长度
.trim() 移除空白
.trimLeft() 移除左边的空白
.trimRight() 移除右边空白
.charAt(n) 返回第n个字符
.concat(value,...) 拼接
.indexOf(substring,start) 子序列位置
.substring(from,to) 根据索引获取子序列
.slice(start,end) 切片
.toLowerCase() 小写
.toUpperCase() 大写
.split(delimiter,limit) 分割

​ 拼接字符串一般用"+"

布尔值

​ 区别于Python,true和false都是小写。

var a = true;
var b = false;

​ ""(空字符串)、0、null、undefined、NaN都是false。

​ null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null;

​ undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明 确的返回值时,返回的也是undefined。

​ null表示变量的值是空(null可以手动清空一个变量的值,使得该变量变为object类型,值为null), undefined则表示只声明了变量,但还没有赋值。

数组

​ python中往类表中添加数据的方法

​ 1.append 尾部追加

l = [1,2]
				l.append([1,2,33,4])
				l = [1,2,[1,2,33,4]]

​ 2.insert 按照索引插入

​ 3.extend 扩展列表

​ 内部其实就是for循环+append

l = [1,2]
				l.extend([1,2,3,4])
				l = [1,2,1,2,3,4]

​ 可以使用以下方式遍历数组中的元素:

var a = [10, 20, 30, 40];
for (var i=0;i<a.length;i++) {
  console.log(i);
}
方法 说明
.length 数组的大小
.push(ele) 尾部追加元素
.pop() 获取尾部的元素
.unshift(ele) 头部插入元素
.shift() 头部移除元素
.slice(start, end) 切片
.reverse() 反转
.join(seq) 将数组元素连接成字符串
.concat(val, ...) 连接数组
.sort() 排序
.forEach() 将数组的每个元素传递给回调函数
.splice() 删除元素,并向数组添加新元素。
.map() 返回一个数组元素调用函数处理后的值的新数组

运算符

算数运算符

+ - * / % ++ --
var x=10;
var res1=x++;
var res2=++x;

res1;
10
res2;
12
//	其中x++表示先将x赋值再自增1,++x表示先自增1再赋值

比较运算符

> >= < <= != == === !==

由于js是弱类型语言,所以存在强制类型转换

1 == “1”  // true  弱等于
1 === "1"  // false 强等于
//上面这张情况出现的原因在于JS是一门弱类型语言(会自动转换数据类型),所以当你用两个等号进行比较时,JS内部会自动先将
//数值类型的1转换成字符串类型的1再进行比较,所以我们以后写JS涉及到比较时尽量用三等号来强制限制类型,防止判断错误

逻辑运算符对比:

Python Javascript
and &&
or ||
not !

流程控制

if-else if-else

()中写条件,{}中写函数体

var a = 10;
if (a > 5){
  console.log("a > 5");
}else if (a < 5) {
  console.log("a < 5");
}else {
  console.log("a = 5");
}

switch

case后只能加整型和字符串类型

冒号,分号和break不能省略,

代码运行会找到匹配的case值,然后向下执行,所以一定要有break

var day = 2;
switch (day) {
  case 0:
  console.log("Sunday");
  break;
  case 1:
  console.log("Monday");
  break;
default:
  console.log("...")
}

for

()中写条件,{}中写函数体

for (var i=0;i<10;i++) {
  console.log(i);
}

while

()中写条件,{}中写函数体

var i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

三目运算

条件 ? 条件成立 : 条件不成立

var a = 1;
var b = 2;
var c = a > b ? a : b
//这里的三元运算顺序是先写判断条件a>b再写条件成立返回的值为a,条件不成立返回的值为b;三元运算可以嵌套使用;
var a=10,b=20;
var x=a>b ?a:(b=="20")?a:b;
x
10

定义函数

python后端定义函数
def
js前端定义函数
function

普通函数

function f1 (){
	console.log("jason");
}

带参数函数

function f2(a,b){
    console.log(arguments);
    console.log(arguments.length);
    console.log(a,b);
}

带返回值的函数

function sum(a,b){
    return a + b;
}

//匿名函数
var sum = function(a,b){
    return a + b;
}
sum(1,2);

立即执行函数 书写立即执行的函数,首先先写两个括号()()这样防止书写混乱

(function(a, b){
  return a + b;
})(1, 2);

ES6中允许使用' => ' 定义函数

//箭头函数
		var f = v => v;
		// 等同于
		var f = function(v){
		  return v;
		}
		
		var sum = (num1, num2) => num1 + num2;
		// 等同于
		var sum = function(num1, num2){
		  return num1 + num2;  //这里的return只能返回一个值,如果想返回多个值需要自己手动给他们包一个数组或对象中
		}

函数中的arguments参数

function add(a,b){
  console.log(a+b);
  console.log(arguments.length); console.log(arguments[0]);
//arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}

函数的全局变量和局部变量

​ 在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变 量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量

​ 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

变量生存周期

​ JavaScript变量的生命期从它们被声明的时间开始。

​ 局部变量会在函数运行以后被删除。

​ 全局变量会在页面关闭后被删除。

作用域

​ 首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。与python作用域关系 查找一模一样!

js对象

​ JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义 对象。

​ JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

​ 对象只是带有属性和方法的特殊数据类型。

​ 在定义对象的时候 关键字是 new

		python后端               		前端js
		json.dumps                     JSON.stringify
		json.loads                     JSON.parse

Date对象

//创建不指定参数
var d1 = new Date();
console.log(d1.toLocaleString());


//参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");
console.log(d3.toLocaleString());

//参数为毫秒数
var d3 = new Date(5000);
console.log(d3.toLocaleString());
console.log(d3.toUTCString());

//参数为年月日小时分钟秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString()); //毫秒并不直接显示

RegExp对象

​ Reg 正则
​ Asyn 异步

		// 定义正则表达式两种方式
		var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
		var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;  建议使用
        //注意: 不能随即添加空格

全局匹配

var s1 = 'egondsb dsb dsb';
s1.match(/s/)
s1.match(/s/g)
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g	//当使用/g的时候,光标会停留在上次匹配到的字符之后
reg2.test('egondsb');
reg2.test('egondsb');
reg2.lastIndex;
//第二个注意事项,全局匹配时有一个lastIndex属性

校验时不传参数

var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/
reg2.test();
reg2.test(undefined);

var reg3 = /undefined/;
reg3.test();

注意: 不使用" /g ",每次光标刷新至文本开头

​ 可使用 `reg2.lastIndex 来查看光标位置

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

原文地址:https://www.cnblogs.com/LZF-190903/p/11879039.html