博主信息
大碗宽面
博文
8
粉丝
0
评论
0
访问量
768
积分:0
P豆:16

JavaScript快速入门

2021年09月28日 22:15:30阅读数:47博客 / 大碗宽面/ 作业

变量(Variable)

变量是存储值的容器。要声明一个变量,先输入关键字 let 或 var,然后输入合适的名称
由于var声明的变量 再次声明依然可以赋予新的值,存在bug 所以不常用
下面使用let:
let name ;,let sex ;,let age ;

标识符必须以字母、下划线(_)或者美元符号($)开头;后续的字符也可以是数字(0-9)。因为 JavaScript 语言是区分大小写的,所以字母可以是从“A”到“Z”的大写字母和从“a”到“z”的小写字母。

合法的标识符示例:Number_hits,temp99,$credit 和 _name。

常量(Constants)

const 创建一个只读的常量。常量标识符的命名规则和变量相同.常量命名通常用全大写的方式 如:
const PI = 3.14;,const MY_NAME = ['张三'];
常量不可以通过重新赋值改变其值,也不可以在代码运行时重新声明。它必须被初始化为某个值。

常量的作用域规则与 let 块级作用域变量相同。若省略const关键字,则该标识符将被视为变量。

全局变量

1.全局变量是全局对象的属性,声明在函数外部,可以全局使用

局部变量

2.局部变量是局部方法/函数的属性,声明在函数内部,只可以内部使用

变量,常量的区别

图中常量不赋值 会显示错误:Uncaught SyntaxError: missing = in const declaration. : const声明中缺少=

图中常量重新赋值 会显示错误 TypeError: invalid assignment to const。 :对const赋值无效

(1)常量表示一些固定不变的数据,必须要有初始值,且值在程序的运行中不可以发生改变




变量定义后可以进行赋值:
yourName = '李四';
也可以将定义、赋值操作写在同一行:
let yourName = '李四';
变量在赋值后是可以更改的:

  1. let yourName = '李四';
  2. console.log(yourName);
  3. yourName = '赵五';
  4. console.log(yourName);

可以直接通过变量名取得变量的值:
yourName;

(2)变量表示一些可以变化的数据,可以无初始值,且值在程序的运行中可以发生变化或者再次赋值

常用数据类型(Data Type)

数据类型 说明
布尔值(Boolean) 有2个值分别是:true 和 false
null 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 Null、NULL或变体完全不同
undefined 和 null 一样是一个特殊的关键字,undefined 表示变量未赋值时的属性
数字(Number) 整数或浮点数,例如: 42 或者 3.14159
字符串(String) 字符串是一串表示文本值的字符序列,例如:”Howdy”
代表(Symbol) ( 在 ECMAScript 6 中新添加的类型).。一种实例是唯一且不可改变的数据类型。

运算符 通常运算符 ( = + - * / ) 前后需要添加空格:

运算符 说明
+ 将两个数字相加,或拼接两个字符串。
-, *, / 这些运算符操作与基础算术一致。只是乘法写作星号,除法写作斜杠。
= 为变量赋值
=== 测试两个值是否相等,并返回一个 true/false (布尔)值。
!== 和等于运算符相反,测试两个值是否不相等,并返回一个 true/false (布尔)值。
! 返回逻辑相反的值,比如当前值为真,则返回 false。原式为真,但经取非后值为 false

函数的种类与参数类型

自定义函数

语法:函数 方法名(参数){}
function way() {}

调用函数

语法:方法名(参数);
way(2, 3);

匿名函数

语法:函数(){} 方法名不写
如果此函数为一次性的 声明后立即使用:

  1. function(a, b) {
  2. console.log(a + b);
  3. })(5,6);

如果这个匿名函数不是一次性的,应该使用函数表达式

  1. let add = function (a, b) {
  2. console.log(a + b);
  3. };
  4. add(5, 5);

更多场景下,我们大多使用箭头函数来简化 胖箭头=> 瘦箭头-=

胖箭头:

  1. add = (a, b) => a + b; //等同于let add = function (a, b)
  2. // 如果函数的代码只有一行。大括号可以不写
  3. console.log(add(11, 9));
  4. // 如果参数只有一个,参数的括号可以不写
  5. add = (a) => a + 5;
  6. console.log(add(99));
  7. // 如果没有参数时,括号必须写
  8. add = () => 10 + 3;
  9. console.log(add());
  10. // 箭头函数
  11. // 如果执行语句只有一条 可以不写大括号:{}
  12. // 如果参数只有一个,可以不写超参数外面的括号
  13. // 如果没有参数,括号必须写

函数参数

函数的参数分为形参和实参
(1)形参:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
(2)实参:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。

  1. function 函数名(形参1,形参2...){
  2. 函数体
  3. }

  1. function 函数名(实参1,实参2....){
  2. 形参1=实参1;
  3. 形参2=实参2;
  4. 形参3=实参3;
  5. }

作用域与闭包的关系与实现

作用域就是一个独立的环境,让变量不会外泄、暴露出去。作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

1.作用域

函数可以访问内部的变量

  1. function way() {
  2. let a = 4;
  3. return a * a;
  4. }
  5. console.log(way());

也可以访问函数外部定义的变量:

  1. let b = 4;
  2. function way() {
  3. let a = 4;
  4. return b * 4;
  5. }
  6. console.log(way());
2.作用域链

1.自由变量
如下代码中,console.log(a)要得到 a 变量,但是在当前的作用域中没有定义 a(可对比一下 b)。当前作用域没有定义的变量,这成为 自由变量 。自由变量的值向父级作用域寻找

  1. <script>
  2. let a = 100;
  3. function fn() {
  4. let b = 200;
  5. console.log(a); // 这里的a在这里就是一个自由变量
  6. console.log(b);
  7. }
  8. fn();
  9. </script>

2.作用域链
如果父级也没有,就一层一层向上寻找,直到找到全局作用域还是没找到,就宣布放弃。这种一层一层的关系,就是 作用域链 。

  1. <script>
  2. let a = 100;
  3. function F1() {
  4. let b = 200;
  5. function F2() {
  6. let c = 300;
  7. console.log(a); // 自由变量,顺作用域链向父作用域找
  8. console.log(b); // 自由变量,顺作用域链向父作用域找
  9. console.log(c); // 本作用域的变量
  10. }
  11. F2();
  12. }
  13. F1();
  14. </script>
3.闭包

闭包的实现原理和作用
1、闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数。

2、闭包的作用:访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理

  1. <script>
  2. function b() {
  3. //外层函数声明的变量
  4. let num = 1;
  5. function f() {
  6. console.log(num);
  7. }
  8. return f();
  9. }
  10. // 实际上b()函数并没有因为执行完就被垃圾回收机制处理掉
  11. // 这就是闭包的作业。调用b()函数,就会执行里面的f函数
  12. // f函数这时就会访问到外层的变量
  13. let ba = b;
  14. ba();
  15. </script>

因此我们可以在函数内部再创建一个函数,这样对内部的函数来说,外层函数的变量都是可见的,然后我们就可以访问到他的变量了。
3、闭包的优点:
方便调用上下文中声明的局部变量逻辑紧密,可以在一个函数中再创建个函数,避免了传参的问题
4、闭包的缺点:
因为使用闭包,可以使函数在执行完后不被销毁,保留在内存中,如果大量使用闭包就会造成内存泄露,内存消耗很大

模板字符串与标签函数

基本用法

  1. let string = `Hello'\n'world`;
  2. console.log(string);
  3. // "Hello'
  4. // 'world"

普通字符串

  1. `aaaaa`
  2. //返回字符串"aaaaa"

引号使用,返回字符串

  1. let a=123;
  2. `aaa${a}aaa`
  3. //返回字符串"aaa123aaa"

带标签的模板字符串,可以自定义函数处理模板字符串

标签函数

  1. function Tag(strings, personExpageExp,...)
  2. //strings:字符串数组,这个其实就是以${}分分隔符分割得到的数组
  3. //personExp:模板字符串中第一个${}的值
  4. //ageExp:模板字符串中第二个${}的值
  5. //...:模板字符串中第n个${}的值
  1. let browserType = 'mozilla';
  2. browserType.length;

(1)获得字符串的长度

  1. let radData = 'My NaMe Is MuD';
  2. radData.toLowerCase();
  3. radData.toUpperCase();

(2)转换大小写

批改老师:PHPzhongPHPzhong

批改状态:合格

老师批语:

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 如何angular12?本篇文章就来介绍一下angular12,手把手教你angular12,有需要的可以参考~
    javascript基础可以买《JavaScript DOM高级程序设计》、《编写可维护的JavaScript 》、《JavaScript权威指南》、《jQuery基础教程》、《JavaScript
    下面本篇文章给大家介绍如何用ps背景的方法,我们一起看看怎么做。
    JavaScript栏目介绍18 个技巧,简单实用,有需要的朋友可以看看
    Vue.js生态系统发布了一个新的软件包。它是流行的Bootstrap框架与Vue.js的集成。这个包称为BootstrapVue。它允许我们使用与Bootstrap(v4)集成的自定义组件。它还支持自定义Bootstrap组件、网格系统,还支持Vue指令。

    2021-01-27

    855

    Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它是来自俄罗斯的Igor Sysoev在为Rambler Media工作期间,使用C语言开发的。
    在我们日常的项目开发中,JavaScript是可以起到非常重要的作用,javascript对于程序员来说 可以使用它减轻后台处理逻辑的负担 对于使用者来说 就是增强使用体验,那么我们今天给大家介绍几个JavaScript
    word一个文本框的方法是:1、新建word文档,点击顶部菜单栏中的【插】选项;2、点击【文本】子栏目中的【文本框】选项;3、在弹出的文本框样式中选择需要的文本框,或者点击【绘制文本框】自行绘制
    swoole扩展本身提供了web服务器功能,可以替代php-fpm。 而如果仅仅用swoole框架,可以像其它PHP框架一样,运行在nignx、apache等web服务器中;本栏目将详细介绍swoole的框架。
    本篇文章带大家深了解一下Angular中的路由,看看上手的方法,介绍一下匹配规则、路由传参、路由嵌套、路由守卫等,希望对大家有所帮助!
    本文为大家分享了一些php基本语法的相关知识,对于一些初学者非常有参考价值,希望能够帮助到大家。
    它是一种广泛使用的开源通用脚本语言,特别适合web开发,可以嵌到HTML中。
    但是对于冒泡排序,插排序,选择排序,排序、归并排序等基本算法,还是要掌握的。
    对于初学者,想编程行业的话,建议选择PHP编程语言。PHP学习周期最短,容易,工作岗位多,不像Java、Python、.NET、C等需要一定的学历,学习困难,很难坚持下去!
    本篇文章给大家了解一下angular10中的模块,介绍一下模块构成、ngModule 属性、常用模块、angualr模块和js模块的区别以及模块懒加载,下面来一起看看。
    直接去github或者gitee去下载官方的发行版,编译安装后,将so拓展写...
    之前的文章《新手:如何用ps背景(总结)》中,给大家介绍了一种的小技巧,如何用ps背景。下面本篇文章给大家介绍如何用ps制作黄金文字效果的方法,我们一起看看怎么做。
    有许多排序算法,而迄今为止最的算法之一是排序(Quicksort)。从算法上讲,这可以用递归或循环实现。但是对于这个问题,用递归法更为自然。
    本篇文章给大家介绍一下Nodejs中的文件操作(创建和删除目录/文件、重命名、追加内容、读取内容),以及简单聊聊stream(流)。
    本篇文章带大家了解一下Node.js包管理工具 npm 和 yarn 的使用方法,带大家npm 和 yarn。