ECMAscript 笔记

JS的引入方式:

1.内嵌:作为Body的最后一个子元素
<script></script>

2.外联:通过script标签的src属性,引入外部的js文件 (推荐)
<script src="test.js"></script>

3.通过元素的事件属性写入js

<div onclick="写入js"></div>

4.通过a标签的href属性写入js,伪url方法
<a href="javascript:alert('hello world')">伪url方法</a>

为符合 web 标准(w3c 标准中的一项)结构(html)、行为(js)、样式(css)相分离,通常会采用外部引入。

主流引擎
IE -------------trident(内核);
chrome-------webkit/blink;
firefox---------gecko;
opera----------presto;
safari----------webkit;

js 三大部分 ECMAScript、DOM、BOM

js基本语法

1.变量

1)声明变量:**
在这里插入图片描述在这里插入图片描述在这里插入图片描述
看都可以,推荐第三种
2)命名规则(用接近的英文单词)———— 起变量名一定要以英文语义化
1.变量名必须以英文字母、、$ 开头
2.变量名可以包括英文字母,
,$,数字
3.不可以用系统的关键字、保留字作为变量名

2.基本数据类型

Number,String,Boolean,undefined,null(值不可改变,只会改房间编号)
Number 数字,例 var a = 123;

String 字符串,语言放双引号里,例 var a=”语言”,““是空串

Boolean 布尔数字,就两个值,false,true

undefined 是没有定义的,表示还没赋值,仅一个值 underfined

null 代表空,占位用,用空值来覆盖

js 语句基本规则
1、语句后面要用分号结束“;”但 function test(){},for(){},if(){}后面都不用加分号
2、js 语法错误会引发后续代码终止,但不会影响其它 js 代码块

3.js运算符

运算操作符

  1. “+”作用:数学运算、字符串链接,任何数据类型加字符串都等于字符串
  2. - * /
    var a = 0 / 0; //答案是 NaN,应该得出一个数字类型的数,但是没法表达,
    就用 NaN (NaN 是 Not a Number 非数,不是数,但是是数字类型
  3. %,摩尔,模,是取余数的意思
    优先级”=“最弱【赋值符号优先级最低】
  4. “++”,“- -”,”+=“,“-=”,“/=“,“*=”,“%=”
    var a =10;document.write(++a );document.write(a); //答案 11;11
    是先执行++,再执行本条语句 document.write(++a)
    例 var a =1;document.write(a ++);document.write(a); //答案 1;2。
    是先执行语句(document.write(a)),再++,所以第一次打印的还是 a,第二次打印 a++后的值
    var a = 1;var b = a-- + – a;document.write(b); //答案 0,先执行–a;此时 a 变成0,然后第一个 a 也变成 0,那么 b = 0-- + --a
    赋值的顺序自右向左,计算的顺序自左向右(按数学来)

比较运算符
1、“>”,”<”,”==”,“>=”,“<=”,”!=”比较结果为 boolean 值
字符串的比较,比的是 ASCII 码(七位二进制 0000000)
var a = “10”>“8”;document.write(a);
//答案 false,不是十和八比,是字符串一零和八比,先用开头的一和八比,比不过就不看第二位了;一样的就拿零和八比

逻辑运算符“&&”,“||”,“!“运算结果为真实的值

“&&”与运算符
两个表达式:先看第一个表达式转换成布尔值的结果是否为真,如果结果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看看第二个表达式,就可以返回该表达式的值了,如果第一位布尔值为 false,不看后面的,返回第一个表达式的值就可以了。

例 var a = 1 && 2; //答案 2,如果第一位 1 为真,结果就为第二位的值 2

如果是三个或多个表达式,会先看第一个表达式是否为真,如果为真,就看第二个表达式,如果第二个也为真,就看第三个表达式(如果为真就往后看,一旦遇到假就返回到假的值),如果第三个是最后一个表达式,那就直接返回第三个的结果

“||”或运算符
看第一个表达式是否为真,如果为真,则返回第一个值,碰到真就返回如果第一个表达式是假,就看第二个表达式,如果第二个是最后一个,就返回第二个的值
真假的说法:全假才为假,有一个真就为真

例 var num = 0 || 3; //答案 3 例 var num = 0 || false; //答案是 false

“!“非运算符,否的意思。
先转成布尔值,再取反
例 var a = ! 123;document.write(a); //答案 false。123 的布尔值是 true,取反是 false
被认定为 false 的值:转换为布尔值会被认定为 false 的值 undefined,null,NaN,“”(空串),0, false

3、三元运算符:表达式?true值1:false值2

typeof 操作符

typeof 能返回的六种数据类型(区分数字类型)number、string、boolean、undefined、object、function

例 var num = {}; console.log(typeof(num)); //泛泛的引入值都返回 object
例 var num = [];console.log(typeof(num)); //泛泛的引入值都返回 object
例 var num = null;console.log(typeof(num)); //答案 null 返回 object,最早是代替空对象的
例 var num = undefined;console.log(typeof(num)); //答案返回 undefined
例 var num = fuction(){};console.log(typeof(num)); // 答案返回 function

类型转换
1 显示转换

数字转换
1)Number(mix) 是想把里面的东西转换成数字
Number(true) -------1;
Number(false)---------0;
Number(null)---------0;
Number(undefined)----------NaN;
Number(abc)----------NaN;
Number(‘123’)---------number;

2)parseInt()
parse 是转化,Int 是整型,整数,目的是把里面转换成整数,从左往右一个一个去判断是否为数字,不是则停止解析。
parseInt(ture) /false----------NaN;
parseInt(‘123ad’)---------123;
parseInt(‘12.33’)---------12;

parseInt(demo ,radix); //radix 是基底的意思(radix 范围是 2-36),是将demo看作dadix进制数转换为10进制数
var demo = “3”;
var num = parseInt(demo ,2);
console.log(typeof(num) + “:” + num);
答案显示 number: NaN

var demo = “b”;
var num = parseInt(demo ,16);
console.log(typeof(num) + “:” + num);
答案显示 number: 11

3)parseFloat(string)
parseFloat(string)转换成浮点数字,从数字类开始看,看到除了第一个点以外的非数字类为截止,返回前面的数

var demo = “100.2abc”;
var num = parseFloat (demo);
console.log(typeof(num) + “:” + num);
答案显示 number: 100.2

字符串转换

1)toString
想把谁转换成字符串,就写成谁.toString,上面是想把 demo 转换成 toString,写成demo.toString

var demo = undefined;
var num = demo.toString();
console.log(typeof(num) + “:” + num);
答案显示报错,undefined 和 null 不能用 toString

toString(radix) 这里的 radix 意思是以十进制为基底,转换成目标进制(即 8 进制)

var demo = 10;
var num = demo.toString(8);
console.log(typeof(num) + “:” + num);
答案 12

2)String(mix)
String(mix)转换成字符串,写什么都成了字符串

var demo = 123.234;
var num = String (demo);
console.log(typeof(num) + “:” + num);
答案显示 string: 123.234

var demo = undefined;
var num = String (demo);
console.log(typeof(num) + “:” + num);
答案显示 string: undefined

boolean转换
Boolean()转换成布尔值 false 和 true
特殊转换:true,任何非空字符串,任何非0值,任何对象 转换后布尔值都是true
false,空字符串,0,NaN,null,undefined 转换后布尔值为false。

2 隐式转换

隐式类型转换是跟你转换了也不知道,隐式类型转换内部隐式调用的是显示的方法
隐式类型转换包括 isNaN () ,++,–, +/-(一元正负),+,乘,% ,,&&,|| ,!,<,>,<= ,>= ,== ,!=

1)isNaN ();
isNaN ();当你把一个数放到()里,它能判断是不是 NaN,先比括号里面的放到 number里面转换,然后返回来

2)++/–(加加减减) -(一元正负) % Number转换*
var a =+”abc”;
console.log(a + “:” + typeof(a));
答案 NaN:number。尽管转换不成数字,也会转换成数字类型,因为里面隐式的调用了一个 number

3)+ 隐式类型会转换成 string,当加号两侧有一个是字符串,就用调用 string,把两个都变成字符串

4)&& || !
与或非,都是有类型转换的,不过是返回的是表达式的值,不是隐士类型转换的值,但是判断是一个类型转换的布尔值

5) < > <= >=
var a =1 > “2”; console.log(a + “:” + typeof(a));
答案 false:boolean,有数字相比较的,就会隐士类型转换成数字类型

var a =”3” > “2”; console.log(a + “:” + typeof(a));
答案这个没类型转换,字符串比较是比较 ASCⅡ编码

6)== !=

不转换类型

=== 和 !==

条件语句

单分支:
单分支选择结构语法:
if(条件,表达式 返回一个布尔值true/false){
//如果条件成立,返回的是true
//就执行花括号内的所有语句
}
双分支(二选一):
双分支语法:
if(条件){
条件成立执行语句
}else{
条件不成立,执行语句2
}
if…else if多分支
多分支语法:
if(条件1){
条件成立,执行语句1
}else if(条件2){
条件成立,执行语句2
}else if(条件3){
条件成立,执行语句3
}…
else{ ----------是可以不用写,根据情况决定是否要写else
条件都不成立,执行语句N
}
switch多分支结构:
switch
语法:
switch(变量){
case 值1:执行语句1;break;
case 值2:执行语句2;break;

default: 执行默认语句;
}
break语句出现在switch语句中是防止语句穿透,若没右break,所有的语句都会执行。
default:默认语句,前面所有case全部不匹配的时候才会执行

多个if:只要满足条件,每条都会执行
多个if…else,只要满足一个条件满足,后面就不会执行

循环结构

1. 先验证后循环
1)for
语法:
for(表达式1,表达式2,表达式3){
循环体的内容
}
表达式1:循环变量初始化
表达式2:判断条件- true/false
表达式3:循环变量改变
执行顺序:表达式1,表达式2,循环体,表达式3

for循环多种形式

var i = 1;
        for( ; i < 100; ){
            console.log(i + '')
            i++;
        }
var i = 100;
        for( ; i --; ){
            console.log(i);
        }

2)while
语法:
while(条件){循环体-要执行的循环语句}

2.先循环后验证
不管条件是否成立,先执行一次
do{
循环体的内容
}while(条件判断)

数组

创建数组

1.
1)var myArray = new Array(); //空数组
2)var myArray = new Array(‘a’,‘b’,‘c’); //创建并初始化

2.创建一个定义长度的数组
var myArray = new Array(10); //这里面的10不是数组里面的值,二十规定数组的长度

3.字面量方式创建数组

1) var myArray = []; //空的数组
2) var myArray = [2,3,'字符串‘,’abject‘,numeber,,空]; //初始化的数组

var arr = [,] // 稀松数组,相当于定了两个位置,conlogo 结果是 undefined

var arr = [ ];和 var arr = new Array( );唯一的区别是在 var arr = new Array( );只传了
一个参数的情况下,会被当成长度,并且成为一个稀松数组

添加数据到数组的方法:

1.前面两种初始化以及下表添加
2.myArray[myArray.length] = ‘新添加的数据’;
3.push()方法 ,是添加到数据到数组的末尾

数组常用方法
按可否改变数组分

一、改变原数组(在原来数组基础上去改变)

reverse,sort,push,pop, unshift, shift,splice

按功能分

1)添加数据
1.push()方法 ,添加数据到数组的末尾
2.unshift()方法,添加数据到数组的第一位
2)删除数据
1.pop()方法 ,删除位于数组末位的数据
2.shift()方法 ,删除数组最前位的数据 //arr.shift()
3.splice()方法 ,此方法可以删除任意量的数据
语法:
两参:splice(下标起始位置(包括此位置),删除的位数);

三参:splice(下标起始位置(包括此位置),删除的位数 ,插入的内容);如果第二个参数设置为0;则是插入数据,如果为1,则是替换数据。

arr.splice(1,1,0,0,0); //意思是从第 1 位起截取 1 位,然后加上 0,0,0 这三个数

var arr = [ 1,2,3,4 ];
arr.splice(-1,1); // 这里的-1 是倒数第一位,数组一般的方法都可以带负数

添加数组
在这里插入图片描述
在这里插入图片描述
arr.splice(1,2,3)或者arr.splice(1,2)都是返回截取相应长度的数组

3) 其他

1.sort() //给数组排序(按照从小到大),sort 按 asc 码大小排序的
所以给我们留了个接口函数,如下图:

sort是按asc码排序的
1)必须写两个参数
2)看返回值
1.当返回值是负数时,那么前面的数放在在前面
2.当返回值是正数时,那么后面的数在前面
2.为 0 ,不会改变
在这里插入图片描述
传参:第一次 12,10 第二次:12,8 第三次:12,4 第四次:12,18 第五次:10,8…

if(a>b){return 1;}else{return -1} 简写为 return a-b;
传参为(a,b),记住升序 return a – b ; 降序 return b – a ;

2.reverse() //数组逆转

sort().reverse() //改变排序方式,与原来的相反

二、不改变原数组
1)slice concat,join—>split,toString
2)forEach filter map reduce reduceRight

1.concat()
把后面的数组拼到前面,并成立一个新的数组,不影响之前的两个数组。
arr1.concat(arrr2);

2.toString()
是把数组当做字符串展示出来

var arr = [1,2,3,4,5,6]     
console.log(arr.toString())    //1,2,3,4,5,6

3.slice()
1、如果填两个参数,slice(从该位开始截取,截取到该位)
如 arr.slice(1,2)从第一位开始截取,截取到第二位
2、如果填一个参数,从第几位开始截取,一直截取到最后。
如果 arr.slice(1) ,从第 1 位开始截取,截取到最后一位
3、不写参数就是整个截取数组(把类数组转换成数组的时候经常使用到)

4.join
join 括号里面需要用字符串形式(标准语法规定),就会用加的东西连接起数组
join 里面不传参默认用逗号连接。

join 可逆的东西:**split( ) 但是这个是字符串的方法 **
带参用法:
var str = ‘wererwtvsd’;
str.split(‘w’); // [‘erer’,‘tvsd’];

var str = ‘1-2-3-4-5-6’;
console.log(str.split(’-’); //[‘1’,‘2’,‘3’,‘4’,‘5’,‘6’]

随机数

Math.random()方法,返回介于 0(包含) ~ 1(不包含) 之间的一个随机数。

var a = Math.random() //返回[0,1)之间的一个随机数

var b = Math.random()*10 // 返回一个[0,10)之间的一个随机数

var c = Math.random()*10 + 10 // 返回一个[10,20)之间的一个随机数

parseInt(): 整数取整
var pars = parseInt(Math.random()*10) //返回一个[0,9]之间的整数

取整方法 Math.round() :四舍五入
Math.floor() : 向上取整
Math.ceil() :向下取整

var rou = Math.round(2.1) //2
var rou = Math.round(2.5) //3

var flo = Math.floor(2.1) //3

var cei = Math.ceil(2.9) //2

新手入门笔记,很多不足,带批判性阅读
本篇博客部分来自于渡一视频教程的总结以及笔记的整理,仅供学习交流,切勿用于商业用途,如有侵权,请联系博主删除,博主QQ:201429846

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值