龙空技术网

JavaScript秘密笔记 第三集

李才哥 171

前言:

现时小伙伴们对“js的decodeuri”大约比较注重,各位老铁们都需要知道一些“js的decodeuri”的相关资讯。那么小编同时在网络上网罗了一些关于“js的decodeuri””的相关资讯,希望咱们能喜欢,我们快快来学习一下吧!

1. **函数:

***作用域, ***声明提前, ***按值传递

2. 全局函数

3. *分支结构

1. **函数:

什么是: 内存中存储一段代码段的存储空间。

代码段专门用于执行一项任务

为什么: 重用一段代码段!

何时: 只要可能反复使用的代码段,都要先保存在一个函数中,再反复使用函数!

如何: 2步:

1. 声明函数: 创建一个函数,保存一段代码

function 函数名(参数变量列表){

步骤清单;

return 返回值;

}

参数变量: 专门定义一项任务必须的数据的变量

何时: 只要一项任务的执行,必须某些数据时,就必须用参数定义.

如何:

定义: 在函数名后的()中,每个参数变量用逗号分隔

不用var!

函数内: 参数变量的用法和普通变量完全一样!

总结: 参数也是变量!

作用: 1. 接收传入函数中的数据

2. 可让函数变得更灵活!

返回值: 专门返回一个函数执行结果的一个数据

何时: 如果函数使用者,需要获得函数的执行结果时

2. 调用函数: 让引擎按照函数记录的步骤,多次执行。

为什么: 任何函数,不调用,绝不会自动执行!

只有调用,才执行,调用几次,执行几次.

如何: 变量=函数名(参数值列表)

强调: 参数值的顺序和个数要和函数定义时的参数变量列表保持一致!

***作用域(scope):

什么是: 一个变量的可用范围

为什么: 避免两个范围的数据,互相干扰

包括: 2种:

1. 全局作用域: window

什么是: 不属于任何函数的,所有函数之外的范围,默认都是全局作用域

保存着: 全局变量!

什么是: 在函数外声明,不属于任何函数的变量

何时: 希望随处都可用的变量,就要在全局创建

2. 函数作用域:

什么是: 函数内部的范围

保存着: 局部变量:

什么是: 在函数内创建的, 仅属于当前函数的变量

何时: 希望一个变量仅在函数内可用时,都要在函数内创建。

包含: 2种: 1. 在函数内var的变量; 2. 参数变量

变量的使用顺序: 先用局部。局部没有,才用全局

***声明提前(hoist):

什么是: 在开始正式执行程序前,引擎会将var声明的变量和function声明的函数,提前到*当前作用域*的顶部,集中创建。

将赋值留在原地!

问题: 破坏了程序的正常执行顺序

变量的解决办法: ES6 let 代替 var

let声明的变量, 不允许提前使用!

函数的解决办法: 第二种声明函数:

let 函数名=function(...){

...

}

总结: 今后,所有的变量都要用let声明

***按值传递:

什么是: 两变量间传值时,或将变量传递给函数的参数时,其实只是将原变量中的值复制一个副本给对方:

原始类型的值: 修改新变量的值,不影响原变量

2. 全局函数:

什么是: ES标准中规定的,浏览器厂商已经实现的,不用.就可直接调用的函数!

已经学过: Number() String() Boolean()

parseInt/Float() isNaN()

反例: alert() prompt() - BOM

document.write() - DOM

console.log()

其他:

1. 编码解码:

什么是编码: 将url中的多字节字符,转化为单字节字符

为什么: url中不支持多字节字符!

何时: 只要url中包含多字节字符,都要先编码为单字节字符,再发送请求!

如何: var code=encodeURI(kword)

什么是解码: 将编码后的url中的单字节字符再转回多字节原文

如何: var kword=decodeURI(code);

问题: url中还不能包含保留字: 比如: 冒号: 斜线/

解决: 用encodeURIComponent()和

decodeURICOmponent() 代替

encodeURI和decodeURI

2. eval: 可执行字符串格式的程序代码

3. *分支结构:

什么是: 让程序根据不同的条件执行不同的操作!

如何:

1. 1个条件1件事,满足条件才执行,不满足就不执行

当操作简单时, 可用短路: 条件&&(操作)

如果操作复杂, 就用if结构: if(条件){

...

}

2. 1个条件2件事,二选一执行:

如果操作复杂,就用if...else结构:

if(条件){//如果满足条件

操作1 //就执行操作1

}else{//否则

操作2 //执行操作2

}

如果操作简单, 用三目/三元/条件:

条件?操作1:操作2;

其实就是用?代替了if, 用:代替了else

更简化: 如果只是在两个值之间选一个:

条件?值1:值2

3. 多个条件,多件事,多选一执行:

如果操作复杂, 可用if...else if...结构:

if(条件1){//如果满足条件1

操作1 //就执行操作1

}else if(条件2){//否则 如果满足条件2

操作2 //就执行操作2

}else if(...){

...

}[else{//否则,就执行默认操作

默认操作

}]——可省略

强调: 如果前一个条件满足,则后续条件不再执行!

如果程序走到后一个条件,暗示前一个条件不满足!

最后一个else可省略: 表示,如果所有条件都不满足,则什么也不做!

如果操作简单,可用三目:

条件1?操作1:

条件2?操作2:

... ? ... :

默认操作; ——不能省略!

更简化: 如果只是多个值选一个

条件1?值1:

条件2?值2:

... ? ... :

默认值

特殊: 如果所有条件都是等于比较:

switch(表达式){ //先计算表达式的值

//再用表达式的值和以下每个case的值做全等===比较

case 值1: //如果表达式的值===值1

操作1; //就执行操作1

break;

case 值2: //如果表达式的值===值2

操作2; //就执行操作2

break;

case ... :

... ;

break;

default: //否则,就执行默认操作

默认操作

}

问题: 只要前一个case满足,则之后所有case都会触发!

解决: 希望每次只有一个case触发

在每个case之间添加break, 中断执行

作业: 100题: 2,4,5

标签: #js的decodeuri