JavaScript 的学习笔记【分分快三计划】

作者:分分快三计划

  强制调换

// parseInt(string):将字符串类型转换成数值;
// parseFloat(string):将字符串类型转换成浮点型数值;
var a = "123";
console.log(typeof parseInt(a));
console.log(typeof parseFloat(a));

// String()和toString():将其它类型转换成字符串
var a = 123;
console.log(typeof String(a));
console.log(typeof a.toString());

// Boolean:将其它数据类型转换成布尔值。;
var a = undefined;
console.log(Boolean(a), typeof Boolean(a));

Number:

1.正数、负数、0、小数

2.NaN:不是三个数字

isNaN:假设检验值不是数字类型,浏览器先转成数字类型,再剖断

NaN==NaN返回false

var a=Number("12px");

if(a==12){

console.log("a=12");

}else if(a==NaN){

console.log("a不是二个数字"卡塔尔(英语:State of Qatar);

}else{

console.log("以上都不创制"卡塔尔(英语:State of Qatar);

}

3.强制数据类型调换:Number,能够转变自便档案的次序为数字,假如是字符串,比如是纯数字字符串,不能够含有其余字符。

4.非勒迫数据类型转变:parseIntparseFloat,只可以调换字符串大概数字。能够蕴涵别的字符,但是数字必需从头。

从左到右,三个一个字符查找,把字符串转变成数字,如若遇上非数字,就不再查找。

5.float类型bug(扩充知识卡塔尔(英语:State of Qatar)

0.1 0.02==0.3

0.8*7==5.6

消除办法:toFixed

七. 创立对象

reduce#reduce(卡塔尔(قطر‎:数组中的全部成员从左到右依次减少到单意气风发值,使用三个累积器,应用到提供情势

filter#filter():过滤数组中的成员

对象#1. 字面量定义对象     2. 做客对象属性,第意气风发种方式 . 第三种方法 [ ];    3.指标1.目的是对单个具体实物的指雁为羹  2.对象是多个容器,容器内部封装了品质(对象的情景:姓名,身体高度,体重...)和办法(对象的作为:吃,喝,玩...)   3.对象是二个严节的数额会集(属性:属性名称)

工厂方式创建对象#对象中this是目的自己    工厂方式的弊病,不可能驾驭地领略对象的切实可行品种

构造函数#布局函数是豆蔻梢头种特意用来创立对象的函数 1.布局函数首字母大写,2.行使的时候,必得利用首要字new,new代表使用布局函数创建新实例,3.重返值是指标  系统原生的布局函数var student = new Object(卡塔尔(英语:State of Qatar);自定义构造函数function Student1 (卡塔尔(قطر‎ {

原型#1.我们创建的每一个函数都有多少个prototype属性,prototype正是指向当前函数的原型对象,原型对象的功效:存款和储蓄全部那个函数的实例分享的属性和方法     2. 原型对象中有一个constructor属性,指向原型的布局函数     3.在实例上动态增加属性,会把原型对象中的相似的习性给屏蔽掉

分分快三计划 1

生龙活虎、变量、数据类型与运算符

字符串

1.定义

2.转义符

n r t b  \ ' ''

3.转字符串:

.toString()

String()

4.字符串是不可变的引用类型

5.字符串常用方法(API):

substr

substring

replace

replaceAll

六. 函数

函数的属性#1.函数参数的私下认可值(1. 用到if语句设置num2的私下认可值 if (!num2卡塔尔国{num2 = 10;}     2. 采纳伊利运算符设置num2的暗中同意值 num2 = !num2 ? 10 : num2;    3. return num1 (num2 || 10卡塔尔;)2. 在函数内部有几个比较极度的靶子,arguments和this1.arguments对象功用是累积函数调用的时候传递的实参,arguments对象有壹特性质为callee,callee属性其实正是一个指南针,指向arguments对象的函数    2. 在大局执长势况中this指的是window对象,全局执涨势况中的变量是window的性质,全局函数是window对象的秘技 函数中的this对象正是指调用函数的施行情状目的(当网页的大局功能域中调用函数,函数中的this值的是window)3. caller保存着调用当前函数的函数的引用,假使说在大局碰到中调用函数,caller的值为null     4. length:当前函数的时候传递的形参的个数

函数的主意#1. apply(卡塔尔(英语:State of Qatar),有七个参数,第多少个参数的是日前的函数的调用者(直接调节了函数的效能域)apply(卡塔尔(قطر‎方法的第三个参数是传递踏向的实参,可以是数组,也得以是arguments2. call(卡塔尔(英语:State of Qatar)方法,也许有三个参数第多个参数跟apply(卡塔尔(英语:State of Qatar) 的首先个参数同样,正是函数的调用者,第二个参数有一点不一样,是把实参三个叁个的传递步向3.计算:apply(卡塔尔国和call(卡塔尔(英语:State of Qatar)入眼不在于参数的传递,器重在于第2个参数,首个参数可以纠正函数运转的作用域

及时执行函数#

闭包#1. 在某些函数调用的时候,会缔造多个实践际遇以至它对应的功效域,然后选拔arguments和和煦定义的其余的命名参数(形参等)的值来最早化函数的移位对象。    2. 功力域链:当前试行的函数的运动指标--那几个函数的表面函数的活动对象--外界函数的外表函数的位移目的--...--全局的进行遭遇的变量对象3. 当全局情状中的函数奉行完毕之后,该函数试行情形和她的运动对象会销毁。对于闭包有所分歧。      4. 函数实施完结之后,它所对应的履市价况被销毁,不过它的移位目的未有被衰亡,直到其闭包函数实行达成的时候,才会销毁闭包函数的实行情状和它对应的职能域链。

闭包和变量  , 闭包练习 , 数组中map的接纳#

  2.数据类型

js中的数据类型包括:字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。

变量

1.变量:可变的量,用来存款和储蓄值和表示值

2.定义方法:后台定义方法,前台定义方法

3.=是赋值操作,左边是变量名,右边是积累的值

4.松散数据类型

2.数据类型:

1.typeof用来判定六中数据类型

2.主导数据类型:number,string,boolean,null,undefined

3.征引数据类型:object,array,function,regexp,Date,包装对象,Math,Globle

一.  JavaScript 的学习

1.js的认识#脚本是逐个推行1. 利用dom获取id为first的div(var 变量名 = document.getElementById(‘id名’卡塔尔国; )2. 函数:改进背景颜色function 连接 ( 卡塔尔(قطر‎  { 变量名.style.backgroundColor = "red”; }3. 健康的出口函数的人机联作alert("hello world”卡塔尔(英语:State of Qatar);4. 行使js加多页面成分document.write("

”卡塔尔(英语:State of Qatar);5. 应用外界js文件   便于维护和能够缓存6. 浏览器不扶持JavaScript,或脚本被剥夺了。

2.基本概念1. 语法跟c和类c语言(java)很相符CMAScript中的一切区分抑扬顿挫写,举个例子变量名称、函数的称呼、函数的参数的称谓等2. 标志符正是指变量、函数名、属性的名称、或然函数的参数等     3. 标记符定义的平整:1.以字母、下划线、$开头。2. 其他前面包车型客车字符能够动用假名、数字、下划线、别的字符(不要使用汉字),推荐使用驼峰命名法:第三个单词首字母小写,之后各个单词首字母大写  parentChild(标志符要见其词,识其意4. 言辞,以;结尾1. 使开采人士,放心的选用部分压缩工具,压缩代码(把剩下的空格、换行删掉)

  1. 升高代码的属性,减小拆解深入分析器的负责5. 语句块{ var b = 2;var c = 3;var d = b c; }6. 变量的注明var f = 5, g = 6;

骨干数据类型#1. undefined(只注解变量,未有赋值卡塔尔    2.null,空对象    3. number    4. Boolean(true/false卡塔尔(英语:State of Qatar)    5. string      6. 类型转变  ( 1. other -> Boolean  2. string -> number  3. parseInt(string, radix卡塔尔卡塔尔国引用类型:object

运算符1.算术运算符 - * / % -- /--在前,先运算,再取值, /--在后,先取值,再运算2. 赋值运算符= 、 = 、-=、*=、/=、%=c =d  c = c d;3、关系运算符>、<、>=、<=、!=、==、===、!====指得是内需比较的变量调换之后是还是不是意气风发律   ===指,类型和值都相近(恒等)4、逻辑运算符&&、||、!  !aa为false的时候,结果为true5. 安慕希运算符决断规范?条件创立的取值:条件不创设的取值

加法计算器#1.收取首个输入框的值var firstValue = parseInt(document.getElementById('first'卡塔尔国.value卡塔尔;2. 获得result输入框var resultInput = document.getElementById('result'卡塔尔;

if 语句1.if语句,就是基于对应的标准,选取试行的呼应逻辑(相应的代码块),在言辞流中会跳跃的执行  2. if (衡量准则卡塔尔(英语:State of Qatar) { 条件创建供给实行的逻辑 } else { 条件创立供给试行的逻辑 }

例子 : bmi  ,计算器

  2.参数

  函数假若定义了参数,在调用函数的时候未有传值则私下认可值为undefined。借使传递的参数当先了形参,js会忽视掉多于的参数值。

function  calc(v1, v2){
    return v1   v2;
}
console.log(calc(5, 6, 7));

  es5不能够一贯写形参的暗中同意值,但足以经过arguments对象来贯彻暗许值。同一时候,arguments对象足以兑现可变参数。

function  calc(v1, v2){
    v1 = v1 || 1;
    v2 = v2 || 2;
    return v1   v2;
}
console.log(calc());

null:表示"未有对象",即该处不该有值

1.看成函数的参数,表示该函数的参数不是指标(扩张知识)。

2.当做指标原型链的尖峰(扩充知识)。

三.

string字符串#1. js中常用的转义字符n,\,',”意味着需求对未来的字符实行转义,假使后边的字符有转义的话,展现相应的意义,若无,不影响后边的字符的正规输出。1.到手字符串的长度str.length2.字符的大大小小写转变toLowerCase(卡塔尔(قطر‎/toUpperCase()   3、检索 stringObj.indexOf(searchString: string, position?: int卡塔尔(قطر‎再次来到值假诺是小于0,代表没有找到相应的子字符串peopleId.lastIndexOf("55", 13卡塔尔(英语:State of Qatar)4、截取字符串peopleId.substring(6, 14卡塔尔国substr(start,length卡塔尔国length:要截取的字符串的长短peopleId.substr(6,8卡塔尔国5,遍历for (var a = 0 in peopleId卡塔尔 {console.log(peopleId.substr(a,1卡塔尔(英语:State of Qatar)卡塔尔(英语:State of Qatar);}

array数组#1. 数组是黄金年代组有序的聚众,能够寄存各连串型。取值,要求通过下标来得到array[index]        2.概念三个空数组var array2 = [ ];3.赢得数组中的长度console.log(array1.length卡塔尔;4.遍历数组for (var a in array1卡塔尔(英语:State of Qatar) {console.log('第' a '个是' array1[a]卡塔尔国;}5.寻找数组中是或不是带有某些内容console.log(array1.indexOf("abc",5卡塔尔卡塔尔6.往数组中加进内容group[0] = "高雅兰”;  group.push(["赵宁","魏坤鹏","魏清阳"]卡塔尔国; group.pop( 卡塔尔(قطر‎;7.shift,抽出数组中首先个成员,并把他从数组中剔除group.shift(卡塔尔;unshift从数组的头顶增加成员,何况重临新数组的长度group.unshift("李璐欣","彭付龙","刘哲”卡塔尔国8.concat,往数组中增加新成员,何况重回四个拉长后的新数组array3.concat("闫麒麟","范晓东","郭彦松",["陈运发","陈坤","马恒飞"]卡塔尔(قطر‎;9.join,把数组中的每一种成员用特殊字符连接成二个新的字符串array4.join("~”卡塔尔(英语:State of Qatar);var str1 = "闫媛媛-王俊亚-李明扬-武国庆”;  str1.split("-"卡塔尔(英语:State of Qatar);10.替换数组中的成员     11.splice(start: int, deleteCount: int, items...: any卡塔尔 start:起始索引,(内容插入的职位)deleteCount:删除的个数 items:要插入的新成员    12.排序var array6 = ["ab","hj","ba","gd","bcd","Ab”]; array6.sort();     13.反向  array6.reverse();

事例 :校验居民身份证号,注册register

JavaScript是一种属于网络的脚本语言,常用来为网页添加各式各样的动态功能,是一种动态类型、弱类型、基于原型的语言。
它包括三个部分:ECMAScript、BOM和DOM。ECMAScript描述了该语言的语法和基本对象。BOM,浏览器对象模型,描述了与浏览器进行交互的方法和接口。DOM,文档对象模型,描述了处理网页内容的方法和接口。
js的使用:js代码写在script标签中,其引入方式和css样式的style标签一致。

数据类型质量评定

1.例子

var num=12;

num2=num;

num2 ;

console.log(num2);

// num2

//num2 =num2;

var obj={name:"zhufeng"};

var obj2=obj;

obj2.name="zhufengpeixun";

console.log(obj);

2.构造存款和储蓄

1.内部存款和储蓄器存款和储蓄数据的五个逻辑组成都部队分:堆与栈

栈(stack卡塔尔国:有限的空中,不可变大小,操作速度快,线性表,先进先出。不唯有是变量,奉行情形等都得以存在于堆中,由系统活动分配。

堆(heap卡塔尔国:空间相对非常大,可变大小空间,map方式存款和储蓄(key,value),通过new手动分配(部分对象能够不要new评释分配)

2.堆与栈的功效:

栈负担保存我们的为数不好多码代码与数量引用和代码实践路线

堆则担任保存多量数量对象。

3.内部存款和储蓄器地址:0x 六人数字

3.多少在内部存款和储蓄器中的存放

1.援引类型总是放在堆中。

2.值等级次序总是存在于栈中。

3.指针总是存在于它注明之处。

4.为主数据类型和援用数据类型差别

1.主题数据类型把值直接赋给变量。接下来操作进程中,直接使用值操作。七个主导数据类型没有啥样关联。

2.援引数据类型:

1.在概念四个变量

2.开荒多少个新的空间,把属性名和属性值存在此个空间中。

3.把空间地址赋给变量。

4.连个援用类型相等援引的同三个内部存款和储蓄器空间的值,二个变动,别的一个也随之变动。

5.借使贰个变量断开援引,重新赋值,另一个变量不受影响

5.数据类型检查评定

1.typeof:再次回到数据类型字符串,无法检查object下细分的品类。能够检查函数和null(例子:八个typeof嵌套)

2.instanceof

3.Object.prototype.toString.call(卡塔尔;(扩张知识卡塔尔国

4.constructor([].constructor===Array)(扩张知识卡塔尔国

五.函数

函数1.文书档案拆解深入分析进程是从上到下,依次实施函数对于其余风流倜傥种编制程序语言都以骨干的内容,极其是对于js,js是面向函数式编程    2. 函数: 1.得以打包任性多条语句, 2. 足以在任什么位置方,任几时候调用   基本语法:function functionName(arg0,arg1,...argn卡塔尔{逻辑语句}3. 函数的调用functionName(arg0,arg1,....argn卡塔尔(قطر‎;

4. 函数都有重返值,return语句表示这段日子函数需求回到的内容,函数中遭逢return,表示函数甘休二个函数中 的再次来到值,有希望是多条 再次回到值未有其它内容,这种情形下,函数实行后无需有此外再次来到值,这种做法,想要提前结束函数而又无需有再次来到值5.  由上边的知识点,大家得以吸收,函数有多种"类型”的函数1、无参数无再次来到值,2、无参数有再次来到值,3、有参数无重临值,4、有参数有重回值

参数ECMAScript中的函数的参数与别的语言中的参数有所不一样1. 不留意传递的参数的个数        2. 不在乎你传递参数的类型   就算函数没有必要参数,在调用的时候,你也得以传递参数,   3. 在函数中有arguments对象,传递的参数都存放在arguments,並且是铁钉铁铆的console.log('hello ' arguments[0] ',' arguments[1]卡塔尔国;4.在js中绝非函数签字(函数签字正是由函数名称、参数的个数、参数的花色以至重回值)由于js中从不函数具名,就从不函数重载,后写的doAdd1会把前边的doAdd1覆盖 传递参数过多,多余片段参数忽视即使js中等高校函授数未有重载,不过大家弥补那风度翩翩可惜(用 if else )注意:arguments不是数组,但是能够像数组那样取值     5. arguments和形参能够合营利用console.log(arguments[0] num2卡塔尔国;6. arguments中的值和呼应的形参的中千篇意气风发律,注意不要在函数内部校勘argments中的值arguments[1] = 10;

变量1.变量其实是存放数据的器皿,js中的变量是弱类型以字母,下划线,$开头,前边能够跟字母,下划线,$最初,数字,其余字符,然而不可能跟关键字重名(if break)2.js中的变量类型分类: 基本类型:Undefined,null,Number,Boolean,String援用类型:object3.动态属性(只限于引用类型)基本类型变量无法加多属性4.变量的复制援用类型复制的时候,是复制的对目的的引用5.把变量当成实参传入函数js中具有的函数的参数都以依据值传递的 变量假诺是宗旨类型,那么把值传递到函数中 尽管变量是引用类型,把对脚下目的的引用传递到函数中

变量功效域1. 全局变量在本子中别的地点都可以被运用,局地变量,只可以在她处处的局部遭遇中采纳。     2. 在js中绝非块级效能域if (true卡塔尔(英语:State of Qatar) {var a1 = 'hello world’;}也便是全局变量3. 万意气风发在有些碰着中,不利用var关键字,来声称变量,那么那个变量就能够自动地被增加到全局环     4. 施用查询标志符(变量的称呼卡塔尔国寻觅变量,沿着变量的成效域链往上去找,如若找到,那么使用这几个变量,若无找到,is not defined         5. 变量的评释会上浮,上浮到近年来变量所在的境遇的上面 函数的宣示也会上浮

函数表明式1. 每个函数都以function类型的实例,与任何的援引类型雷同,函数的称号就是对函数对象的援引       2. 函数表达式跟上边函数的扬言基本上同样,不过,注目的在于表明式最终,必要加分号var sum2 = function (num1,num2卡塔尔(英语:State of Qatar) {return num1 num2;};3. 函数的名目和函数表明式的分歧浏览器中的分析器在解析的进度中,先读取函数的宣示,为了让函数在施行在此之前都可用。 函数表明式,解析的时候,会先剖判变量的扬言,然后试行到赋值语句的时候,才对变量实行赋值,之后才足以利用函数表达式申明的函数

函数的嵌套#1.函数当做参数      2.函数充任重返值

五、原型

if.4个判定语法

1.if、else:能做到全数的判断

if判别标准得以是表明式,也能够是一个值,也得以是三个表明式

最主要:决断代码块内部宣称的变量外界也足以访问,所以全局变量不要以i~n字母命名

2.伊利运算符:多值单条件推断

false?console.log("1"):void(0)

3.switch:单值多规格判定

break与不写break

标准化判断:===

4.&&:多值单条件轻易剖断

&&和|| 多值推断

2.js料定的运用(开关灯)

1.获取body

document:上下文context

document.getElementById:只可以获取三个

get element by id

2.让body有个点击事件

3.点击时候让body颜色改变

4.用if else switch 安慕希运算符来完成


二.  循环语句

switch语句#流动调查整语句1、switch语句中的相比是===   2、小心穿透,合理的行使break,不加break暗许是穿透   3、注意default,各类switch在终极都有多少个default,暗中同意情形下进行default    4.在大多言语中switch语句只可以接纳数值,可是在js中能够利用其余数据类型(字符串,对象),每三个case中值不必然是常量,也也许是变量,也许是表明式

for 语句1. for循环,用来管理牢固次数的循环  for循环三要素:发轫条件,终止条件,变化条件  变化条件得以是三种化的,如i =5;2. for循环三成分是可选的,省略个中的法规,会创立一个极度循环     3. break 和 continue  continue;跳出当前此次循环     4.  for-in语句,是生机勃勃种标准的迭代语句for (var propertyName in window卡塔尔{console.log(propertyName卡塔尔(英语:State of Qatar);}

while语句while(表达式(终止条件卡塔尔卡塔尔{管理的逻辑}while (num < 0 || num > 100卡塔尔 {num = prompt("请输入你的战绩”卡塔尔(英语:State of Qatar);}

事例 : 猴子摘桃 , 抓花生

  1.尺码语句

// if(exp){执行代码段};
var a = 123; // var a;
if(typeof a === "number"){
    console.log("true");
}

// if(exp){exp为true的代码段}else{exp为false的代码段};
var a = 123; // var a;
if(typeof a === "number"){
    console.log("true");
}else {
    console.log("false");
}

// if ... else if ...
var readline = require("readline");
var rl = readline.createInterface({
    input: process.stdin,
    out: process.stdout,
});
rl.question("请输入成绩: ", (number) => {
    if(number > 100){
        console.log("输入的成绩不能大于100!");
    }else if(number > 80){
        console.log("录入成功,A档");
    }else if(number > 60){
        console.log("录入成功,B档");
    }else if(number > 0){
        console.log("录入成功,C档");
    }else{
        console.log("输入的成绩不能小于0!")
    }
    rl.close();
});
rl.on("close", function () {
    console.log("退出程序!");
    process.exit();
});

分分快三计划 2

var readline = require("readline");
var rl = readline.createInterface({
    input: process.stdin,
    out: process.stdout,
});
rl.question("请输入星期几: ", (day) => {
    switch(day){
        case "1":
            console.log("今天吃炒面");
            break;
        case "2":
            console.log("今天吃鱼香肉丝");
            break;
        case "3":
            console.log("今天吃麻辣香锅盖饭");
            break;
        case "4":
            console.log("今天吃豆丁胡萝卜");
            break;
        case "5":
            console.log("今天公司聚餐");
            break;
        case "6":
            console.log("今天吃泡面");
            break;
        case "7":
            console.log("今天撸串");
            break;
        default:
            console.log("input error.")
    }

    rl.close();
});
rl.on("close", function () {
    process.exit();
}

// switch ... case ...
var readline = require("readline");
var rl = readline.createInterface({
    input: process.stdin,
    out: process.stdout,
});
rl.question("请输入星期几: ", (day) => {
    switch(day){
        case "1":
            console.log("今天吃炒面");
            break;
        case "2":
            console.log("今天吃鱼香肉丝");
            break;
        case "3":
            console.log("今天吃麻辣香锅盖饭");
            break;
        case "4":
            console.log("今天吃豆丁胡萝卜");
            break;
        case "5":
            console.log("今天公司聚餐");
            break;
        case "6":
            console.log("今天吃泡面");
            break;
        case "7":
            console.log("今天撸串");
            break;
        default:
            console.log("input error.")
    }

    rl.close();
});
rl.on("close", function () {
    process.exit();
});

1.for 四部曲:

1.宣称赋值变量 var i=0;

2.施行剖断标准 i<5

3.执行{}内代码

4.执行i 部分

声称变量能够在外界访谈。

赋值区、推断区、操作区都得以写多少个表达式

5.脱离双重循环

2.循环逻辑调节语句:break/continue;

break:直接退出循环,不进行后一次循环,不举办i 部分

continue:终止当前循环,实行下二次巡回

3.练习题:

for(var i=0;i<10;i ){

if(i<=5){

i=i 2;

continue;

}

i=i 5;

break;

console.log(i);

}

console.log(i);

  1. forin while dowhile

1.forin

key value:有多少个属性,就遍历多少次,不管是目的属性还是原型属性

迭代会先迭代数字,后迭代属性,最终迭代原型属性

for in循环中想得到大家的属性名,只可以用[],无法用.,因为不分明是还是不是留存数字属性名

2.while

3.dowhile

3.隔行变色,三行变色

1.用for,forin,while,dowhile实现

2.用七种推断方法实现

3.鼠标移入改换颜色


八. 原型

继承

  局地作用域

var a = 19;
var b = 30;
function fun() {
  a = 20;
  var b = 1000;
  console.log("a = "   a);  // 这里打印的是20
  console.log("b = "   b);  // 这里打印的是1000
  console.log("window.b = "   window.b);  // 这里打印的是30
}
fun();
console.log(a);  // 这里打印的是20
// 定义形参相当于在函数作用域中声明了变量

函数

function:函数数据类型,也正是三个格局照旧多个效果与利益

函数外号:方法,即使被充当事件管理函数,又称作句柄

1.概念八个函数(安插意气风发段代码,定义二个模板卡塔尔(英语:State of Qatar)

1.在内部存款和储蓄器堆中开垦贰个内部存款和储蓄器空间

2.把函数体js代码当做字符串存在内部存款和储蓄器中间内(如若函数只定义,没实践的话,未有别的意义)

3.仓库中的函数名对应地址,地址援用

4.当三个函数履行时候,施行情状被推入内部存款和储蓄器中,那么些进程叫做压栈。

2.执行函数(施行安顿)

1.在库房中开拓一片空间,那几个空间叫加强践意况

2.把仓库储存空间的js代码字符串当做代码运营

3.function 作用:

1.卫戍代码重复

2.将代码实行李包裹装,代码未有必要重新编排,只要求执行以下函数就可以。

3.潜伏变量,成立私有变量

4.创建类

4.参数:求1 1的和(形参:能够掌握成多少个变量)(多态:一个效果与利益的数不胜数形态,通过参数达成不相同的效能)

function sum(){

var total=1 1;

console.log(total);

}

sum();

1.形参的法力:达成叁个效用,开掘一些原料未有,置顶安插时候从不艺术获得,须求从表面得到。

那会儿大家供给把原确定义在形参上,在进行安插的时候,只提供原料就好了。

2.定义八个形参,未有传递值,暗中同意值:undefined,传递参数检查评定,未有重载

function sum(num1,num2){

if(typeof num1==="undefined"){

total =num1;

}

if(typeof num2==="undefined"){

total =num2;

}

console.log(total);

}

3.arguments:函数内置接收参数机制,类数组(数字作为目录,索引从0先河,代表第多少个传递的参数)

//内置:天生存在的,不管你传递参数没有,都会有其一目的的留存

console.dir(arguments);

[0],length,callee:代表当前函数本身

4.函数实行时候,会在里面贯彻三个个体地盘,独有在此个地盘内的代码能够访谈私有变量,外界代码不得以访问私有变量。

函数实践时候会产生一个民用功效域保养里面包车型客车变量不受外部干扰,大家把这么些机制叫做闭包。

arguments校订会改正形参内容,同理形参改善也会改正arguments。唯有生龙活虎种状态十分小器晚成,

arguments的长度不是可变的,所以校订形参不会扩充arguments.

5.外表怎么着访谈total?return

在外表想拜访什么值,函数内部return这么些值就能够了.外面能够访谈那么些结果恐怕对结果再进

行加工。

此时函数终止实行,调节函数函数体代码实行到如何地点甘休。

设若大家从不写return,也许写return;,默许重临值undefined

实名函数、无名氏函数、函数表明式和及时施行函数

~,!, ,-与(卡塔尔国都足以定义立刻实行函数

终止外界函数试行

6.平地风波句柄

7.eval


四.

多维数组数组的嵌套,用来注解实际生活中的难题

object对象#1. 对象是意气风发种冬季的数码集结,由若干个键值对,大括号就是概念二个对像,假使剧情满含几个个性,供给用逗号隔开分离。定义对象的本性名称的时候需求依据事情发生前定义操作符的平整(驼峰命名法)2. 目的引用假使区别的变量指向同生龙活虎对象(指向这么些目的的内部存款和储蓄器地址),那么她们都以那几个目的的援引,他们指向了同一块内部存款和储蓄器改进在那之中二个,其它叁个也被涂改  废除八个变量对指标的援用,不影响其余的变量 对原始类型的数据的引用,都以值拷贝3. 增加属性obj3.age = 18;删除属性delete obj3["sex”];剖断某些属性是不是归于对象console.log('sex' in obj3卡塔尔;遍历对象中的属性for (var property in student卡塔尔(英语:State of Qatar){console.log(property卡塔尔(英语:State of Qatar);}对象嵌套  动态属性bite:function (卡塔尔国{alert(“汪汪汪“);}

date1.获取当前的日子var date = new Date(卡塔尔;获取年date.getFullYear(卡塔尔(英语:State of Qatar)获取月(0-11卡塔尔date.getMonth(卡塔尔获取日date.getDate(卡塔尔(قطر‎获取星期date.getDay(卡塔尔国时间戳(1969-now)(皮秒级卡塔尔(英语:State of Qatar)date.get提姆e(卡塔尔获取时分秒和微秒date.getHours(卡塔尔国 date.getMinutes(卡塔尔 date.getSeconds(卡塔尔(قطر‎ date.getMilliseconds(卡塔尔(قطر‎2.安装datedate.setFullYear(2018卡塔尔国;3.对照时间var interval = date2 - date;4.时日相加(转造成纳秒,然后相加卡塔尔(英语:State of Qatar)    5.赢得本地时间字符串console.log(date4.toLocaleDateString(卡塔尔(英语:State of Qatar)卡塔尔(英语:State of Qatar);6.获取标依期区date4.toUTCString(卡塔尔7.把星期转造成汉字var weekDay = ["星期日","星期一","星期2","星期3","星期4","星期5","星期6”];   console.log(weekDay[date4.getDay()]);

计时器#1. setInterval(func,delay);每隔delay(毫秒)触发func2. setTimeout(func,delay)延迟delay(毫秒),触发fund

snakes 贪吃蛇#

  1.定义

  函数通过function关键字定义。function 函数名称([参数1, ...]){代码块; [return 返回值]};也能够经过Function结构器定义函数。

// 通过function 关键字定义函数
function hello() {
    console.log("hello world.")
};
hello();

  佚名函数,即function关键字定义的无函数名称的函数。

// 通过function 关键字定义匿名函数
var hello = function () {
    console.log("hello world.")
};
hello();

  将无名氏函数作为参数,传递给另叁个函数举办实施,那时其被称作回调函数。回调函数在js中非常强硬。

function calc(v1, v2, callback) {
    v1 = v1 || 1;
    v2 = v2 || 2;
    return callback(v1, v2);
}
calc(3,4, function (v1, v2) {
    return v1   v2
});

  

Object

1.由多组属性名属性值组成(七个键值对keyvalue组成)

2.目的的二种创立格局(json字面量创制,new实例创设)

3.JSON类型:JSON.parse,JSON.stringify

4.数组类型:Array,常用属性和措施,访谈方法

5.属性增加和删除改查,属性无法重复

三种办法访谈属性

JavaScript 的学习笔记【分分快三计划】。假删除真删除

6.对象细分:Object,RegExp,String,Boolean,Date,Array,Function,Math等八方呼应的实例

对象、类、实例

  1.变量

  宣称变量

- 通过var关键字声明一个或多个变量。
  - 声明变量的同时可以给其赋值(直接量,字面量),也可以不赋值,不赋值时默认值为undefined。
  - 变量命名遵循一般的命名规范:区分大小写,不能包含特殊字符,大小驼峰命名或下划线命名,不能以数字开头,命名含义明确等。
  - 变量在内存中会自动存储于释放。

数组

1.三种创建格局

new Array(数组内容卡塔尔(قطر‎ //实例创造方式

[xx,xx,xx]        //字面量成立方式

console.dir([])

2.数组是由八个项构成的,每种项之间用逗号隔开分离,每意气风发项存款和储蓄的数据类型能够是随便数据类型

3.数组也是目标类型的,是由属性名和属性值组成

属性名:数组钟爱味着第几项的数码,也足以叫做索引

4.输出数组内容:

数组[索引项]:便是获得数组中第索引 1项的照拂的始末

length/['length']:获取数经理度

万一索引超过索引项,会重返undefined

数组迭代,for 循环和for in 循环,for循环表明前多个天性达成数组迭代

1.增多方法

push:

shift:

pop:

unshift:

splice(实现shift,pop,unshift,push)

2.查询和复制方法

slice(达成复制卡塔尔(قطر‎

concat(完毕复制卡塔尔国

3.转字符串

JavaScript 的学习笔记【分分快三计划】。toString

join

兑现求和:eval(join(" "卡塔尔(英语:State of Qatar)卡塔尔国

4.数组排序和排列

reverse

sort:原有数组也改造:只好管理10以内的数字排序

//由小到大

sort(function(a,b){

//a,b a代表每一趟循环当前项,b代表每一次循环后续项

//通过冒泡排序的思想得以达成

return a-b;                              //倘若前边比后边大,那样就交流地点

});

5.不相称方法

map,forEach,indexOf等方法

  4.长富运算符

// exp1?exp2:exp3
var a = 1231; // var a;
typeof a==="number"?console.log("true"):console.log("false");

.Boolean

1.!:将值转成布尔类型,然后取反

2.!!:将值转成布尔类型,也正是Boolean

3.只要唯有三个值:独有0,NaN,null,undefined,""重返false,其余一切赶回true。

2.相比较法规:

1.目的与指标相比较永恒不对等。[]==[] {}=={} 3=="3"

2.主干数据类型相比较 只要值非常就非常

3.指标与字符串比较,先将对象转成字符串 []==""

4.指标与Boolean比较,对象转成字符串,然后转成数字,Boolean也转变成数字相比

5.目的与数字相比较,对象转成字符串,转数字,然后与数字相比

6.数字==布尔,布尔转成数字

7.字符串==数字,字符串转数字

8.字符串==布尔,都转形成数字

9.null==undefined,true,与其他具有项目都分歧

10.===比较数据类型,==转成同二个数据类型比较

四、对象

  js中目的分为:内建目标、宿主对象和自定义对象。

undefined:申明可是并未有赋值,本应该有值

1.变量被声称了,但从未赋值时,就等于undefined。

2.目的未有申明大概赋值的属性,该属性的值为undefined。

3.函数并未有提供参数大概重返值,默感到undefined(扩充知识卡塔尔(英语:State of Qatar)。

三、函数

  3.函数调用

function calc(v1, v2, callback) {
    v1 = v1 || 1;
    v2 = v2 || 2;
    return callback(v1, v2);
}
value1 = calc(3,4, function (v1, v2) {
    return v1   v2
});

value2 = calc.call(calc, 3, 4, function (v1, v2) {
    return v1   v2;
});

value3 = calc.apply(calc, [3, 4, function (v1, v2) {
    return v1   v2;
}]);

value4 = (function (v1, v2) {
    return v1   v2;
})(3, 4);
console.group("函数调用的方式");
console.log("- 直接调用: "   value1);
console.log("- 间接call调用: "   value2);
console.log("- 间接apply调用: "   value3);
console.log("- 自调用: "   value4);

  2.对象属性操作和方法创造

var obj = new Object(); // new 构造对象, 可使用typeof obj 查看对象
// 在对象中保存的值称为属性
// 向对象中添加属性:对象.属性名 = 属性值
obj.name = "孙悟空";
obj.gender = "男猴";
obj.age = 18;
console.log(obj);
// 读取对象中的属性: 对象.属性名
// 如果读取的对象中没有该属性,会返回undefined
console.log(obj.name);
// 修改对象的属性值: 对象.属性名 = 新值
obj.age = 24;
console.log(obj);
// 删除对象属性
delete obj.age;
console.log(obj);
// 自定义
obj.fuc = function add(x, y) {
    return x y;
};
console.log(obj);

  1.指标创设

  间接通过var关键字定义Object对象。

var obj1 = new Object();
var obj2 = {};

// 使用字面量来创建一个对象: var obj = {} 和new本质上是一模一样的
// 使用字面量创建对象时,可以在创建对象时直接指定对象中的属性
// 字面量里面的属性可以加引号,也可以不加引号,建议不加
// 如果使用特殊字符或名字则必须加引号
var obj = {
  name: "孙悟空",
  gender: "男猴",
  age: 1500,
  credit: {
    name1: "孙行者",
    name2: "齐天大圣"
  }
};
console.log(obj);

  也能够通过工厂方法创造对象。

function Person(name, age) {
    var obj = {};
    obj.name = name;
    obj.age = age;
    obj.sayHello = function () {
        console.log(obj.name   ", "   obj.age   "years old.");
    };
    return obj;
}
sun = Person("孙悟空", 2000);
sun.sayHello();

二、流程序调节制

  3.逻辑运算符

&&、||、!

  2.原型模拟类和对象

  在python中宣称三个类和目的:

class Person(object):
  def __init__(self, name, age):
    self.name = name
    self.age = age
  def sayHello(self):
    print("{}, {} years old.".format(self.name, self.age))

sun = Person("孙悟空", 2000)
sun.sayHello()  // 对象可以调用方法,因为方法只有一份且存在类内存中,每个对象只保留了引用
Person.sayHello(sun)  // 类可以传入一个对象来调用方法,因为方法存在类内存中

  在Java中开创一个类和指标:类的办法存在方法区,对象存在堆内部存款和储蓄器中,多少个对象共用它们父类的主意。它供给设置静态方法来贯彻指标调用。

public class Person {
    private String name;
    private int age;
    Person(String name, int age){
      this.name = name;
      this.age = age;
  }  
  public void sayHello(){
      System.out.println(this.name   ",  "   this.age   "years old.");
  }
  public static void sayHello(Person obj){
     System.out.println(obj.name   ",  "   obj.age   "years old.");
  }
  public static void main(String[] args){
     Person sun = new Person("孙悟空", 2000);
     Person.sayHello(sun);
     sun.sayHello();
  }
}

  在js中,对象保存在堆内部存款和储蓄器中,每成立三个新的目的都会开三个堆内部存款和储蓄器空间,并把其品质和格局都保存在堆内部存款和储蓄器中。注意,假使不用原型,每一个对象都会将其方法复制大器晚成份到温馨的堆内部存款和储蓄器空间中。js中贯彻类调用实例对象:

function MyPerson(name, age, gender) {
    this.name = name;
    this.age = age;
    this.gender = gender;
    MyPerson.sayName = MyPerson.prototype.sayName = function (obj) { // 在自己的prototype空间里写函数
        obj = obj || this;
        console.log("大家好,我系"   obj.name   ", 一只火眼金睛的"   obj.gender);  // 让每个实例都能访问
    }
}
var mp1 = new MyPerson("孙悟空", 2000, "男猴");   // 注意这里使用的是new MyPerson,构造
mp1.sayName();
MyPerson.sayName(mp1);

 

  while 循环

分分快三计划 3

var arr = function (number) {
    var arr_list = new Array(); // var arr_list = [];
    var i = 0;
    while (i < number){
        arr_list[i] = Math.random();
        i  ;
    }
    return arr_list;
};
console.log(arr(5))

var arr = function (number) {
    var arr_list = new Array(); // var arr_list = [];
    var i = 0;
    while (i < number){
        arr_list[i] = Math.random();
        i  ;
    }
    return arr_list;
};
console.log(arr(5));

  3.作用域

在js中一共有两种作用域,全局作用域和函数作用域
    全局作用域:
       - 直接编写在script标签内的JS代码
       - 在页面打开时创建,在页面关闭时销毁
       - 在全局作用域中有一个全局对象window,可以直接使用.它代表的是一个浏览器的窗口,它由浏览器创建
       - 在全局作用域中创建的变量都会作为window对象的属性保存
       - 在全局作用域中创建的函数都会作为window对象的方法保存
       - 全局作用中的变量和函数在页面的任意位置都可以被访问/执行
  函数作用域:
      - 调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁
      - 每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的
     - 全局作用域中访问不到函数作用域,函数作用域中可以访问全局作用域
     - 函数作用域会优先查找本作用域中的变量,如果没有就找上一级中的变量
     - 函数作用域的a并不影响上一级作用域中的a
      - 如果不使用var声明,直接写a = 20,就是在操作全局作用域中的a变量
      - 如果使用全局作用域中的a变量[在本作用域中已声明a变量],可以用window.a,这在b1中已强调过

  1.原型prototype

我们所创建的每一个函数,解析器都会向函数中添加一个属性:prototype
如果函数作为普通函数调用prototype,没有任何作用
当该函数以构造函数的形式调用[per1]时,它[per1]会有一个隐含的属性__proto__指向其原型对象[Person]
每次调用时都会有各自的__proto__指向原型对象的prototype,也就是原型对象中的属性和方法被调用函数"共享"

function Person() {}
console.log(Person.prototype);

var per1 = new Person();
console.log(per1.__proto__ == Person.prototype);  // true

Person.prototype.a = "我是原型对象中的123456";
per1.a = "我是mc中的"  "123456";

var per2 = new Person();
console.log(per1.a);   // 找到调用函数的属性和方法,直接执行
console.log(per2.a);   // 如果调用函数没有该属性或方法,会从原型对象中寻找

Person.prototype.sayName = function() {
    console.log('我是原型对象的sayName');
};
per2.sayName = function() {
    console.log('我是per2中的sayName');
};
per1.sayName(); // 和前面的类似
per2.sayName(); // 和前面的类似

// 解决全局作用域污染问题: 把对象的函数写在prototype里而不是全局作用域里
function MyPerson(name, age, gender) {
    this.name = name;
    this.age = age;
    this.gender = gender;
}
MyPerson.prototype.sayName = function() {
      console.log("大家好,我系"   this.name);
};
var mp1 = new MyPerson("孙悟空", 2000, "男猴");
mp1.sayName();

  1.this关键字

解析器在调用函数时,会向函数内部传递进一个隐含的参数这个隐含的参数就是this,this指向的是一个对象,这个对象称为函数执行的上下文对象
根据函数的调用方式不同,this会指向不同的对象
   - 1.以函数的形式调用时,this永远都是window
   - 2.以方法的形式调用时,this就是调用方法的那个对象

var name = "全局名字";
function func(a, b) {
  console.log("a = "   a   ", b = "   b);
  console.log(" Object: "   this);
  console.log(this);
}
func(123, 456);    // this指的是window
function func2() {
  console.log(this.name);
  console.log(this);
}
var obj = {
  name: "孙悟空",
  sayName: func,    // 把函数赋给属性,this指的是obj
  sayName2: func2

};
var obj2 = {
  name: "猪八戒",
  sayName: func,     // this指的是obj2
  sayName2: func2
};
obj2.sayName(2332, 4523);
obj.sayName(234, 789);
obj.sayName2();   // this可以支持对象内部的函数去访问对象内部的属性
obj2.sayName2();  // 这一点特别像python类中的self

var obj3 = {
  name: "沙和尚",
  teacher: "唐僧",
  address: "流沙河",
  sayMyTeacher: function3,
  sayMySelf: function2,
  say: function1
};
function function1() {
    var say = this.sayMySelf()   this.sayMyTeacher();
    console.log(say);
}
function function2() {
  var say = "大家好,我是"   this.name   ",我老家是"   this.address;
  return say
}
function function3() {
  var say = "。我的师父是"   this.teacher   "老师, 他是个得道高僧";
  return say
}
obj3.say();

  3.运算符

  全局作用域

console.log(window); // window是个对象

// 使用var关键字声明的变量,会在所有的代码执行之前执行;如果声明变量时不使用var,则变量不会被提前声明
console.log(a); // 此时的var a已被声明,它的值是undefined,到下一行时它的值才会是123

var a = 123;  // 它相当于window.a = 123
console.log(window.a);

console.log(abc()); //  可以提前声明和执行
console.log(abc2()); // var提前声明的是一个undefined的window属性,不是个函数: abc2 is not a function

// 使用function关键字声明的函数,和var的机制一样,是函数声明的提前,它会提前(优先)执行
function abc() {      // 它相当于window.abc = function (){console.log("abc")}
  console.log("abc");
}
console.log(window.abc());

// 使用函数表达式不会被声明提前
var abc2 = function() {
  console.log("abc2");
}

  5.运算符优先级

运算符 描述
. [] () 字段访问、数组下标、函数调用以及表达式分组
-- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
- 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= instanceof 小于、小于等于、大于、大于等于、instanceof
== != === !== 等于、不等于、严格相等、非严格相等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值

  2.布局方法的重写

function Person1(name, age, gender) {
  this.name = name;
  this.age = age;
  this.gender = gender;
  // this.sayName = function() {
  //   console.log("大家好,我系"   this.name);  // 这样写每创建一个对象,就会创建一个sayName
  // }
  this.sayName = sayName; // 共用同一个方法,它就相当于python中的类方法[类方法只有一份,但每个实例对象都共用]
}                         // 注意这里的写法,一个隐含的this传递给了sayName函数
var per1 = new Person1("孙悟空", 18, "男");
per1.sayName();

// 在全局作用域中写sayName
// 但是它污染了全局作用域的命名空间,也就是全局作用域不能再写sayName函数
// 另外这个函数也很不安全,由此引出了"原型"的概念
function sayName() {
  console.log("大家好,我系"   this.name);
}

  do ... while循环

// 和java中的do ... while 循环一致,先执行依次do内的代码块,再执行while 判断。不管while条件判断是否成功,do都会至少执行一次。
var arr = function (number) {
    var arr_list = new Array(); // var arr_list = [];
    var i = 0;
    do {
        arr_list[i] = Math.random();
        i  ;
    }while (i > number);
    return arr_list;
};
console.log(arr(5));

  隐式调换

// 转换为布尔类型
var a;  // undefined.
var test = function(vec){
    if(vec){
        console.log("true");
    }else{
        console.log("false");
    }
};
a = null;
a = 0;   // 0值
a = NaN; // NaN值
a = '';  // 空字符串
test(a);  

// 转换成数值型数据
var a;// undefined -> NaN
var b = 1;
a = null; // null -> 0
a = false; // false -> 0
a = "123"; // "12" -> 12
a = "123abc"; // "123abc" -> NaN
console.log(typeof a);
console.log(b   a);

  1.算术运算符

 、-、*、/、%、  、--
  、--分为前缀形式和后缀形式。前缀先自加(减)再执行运算,后缀先执行运算再自加(减)。

  3.原型

  2.循环语句

  for 循环

和java中的for循环一致:for(exp1; exp2; exp3){代码块;}
  - exp1: 无条件的执行第一个表达式
  - exp2: 是判断是否能执行循环体的条件
  - exp3: 增量操作

// 九九乘法表
var str = "";
for(var i=1;i<=9;i  ){
    for(var j=1;j<=i;j  ){
        str  = i   "*"   j   "="   i*j   " ";
        if(i === j){
            str  = "n";
        }
    }
}
console.log(str);

  2.赋值运算符和相比运算符

=、 =、-=、*=、/=、%=、.=
>、>=、<、<=、==、!=、===、!==

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 日记本 web