js引入方式,实例演示;

  1. 行内脚本
    1. <button onclick="alert(1)">Click</button>
  2. 内部脚本 将js写在一对script标签中
    1. <style>
    2. .active{
    3. color: red;
    4. background: yellow;
    5. }
    6. </style>
    7. <script>
    8. function toggleColor() {
    9. document.querySelector("h1").classList.toggle("active");
    10. }
    11. </script>
    12. <button onclick('toggleColor')></button>
  3. 外部引入 将js代码写入到外部的js中,在html中进行引用
    toggle.js:
    1. function toggleColor() {
    2. document.querySelector("h1").classList.toggle("active");
    3. }
    html中的代码:
    1. <script src="toggle.js"></script>

    变量与常量的声明与使用方式,变量的类型和转换;

    在es6之前是没有常量。
    1. <script>
    2. //传统方式:在es6之前 没有常量
    3. // 变量:数据共享
    4. let email = "admin@qq.com";
    5. console.log(email);
    6. console.log(email);
    7. console.log(email);
    8. </script>

    如果变量没有初始化,那么就是undenfined
    1. let user;
    2. console.log(user);
    1. userName=null;
    2. console.log(userName);
    赋值null,相当于把这个变量删除
    常量:
    1. //常量
    2. const GENDER = "male";
    常量通常使用大写,多个单词之间使用下划线 这个是不允许被更新的
    因为不允许被更新,所以声明的时候必须赋值。
    js是严格区分大小写。
    命名方式:
    1. 驼峰式:userName, unitPrice
    2. 帕斯卡式:UserName UnitPrice
    3. 蛇形式:user_name unit_price
    4. 匈牙利式:将数据类型放在变量的最前面
    5. object类型的:oBtn
    6. 推荐使用驼峰式
    数据类型
    1. <script>
    2. // 一旦将数据类型确定,那么基于这个数据的允许的操作也就确定了
    3. console.log(100 * "abc"); // NaN
    4. </script>
    1、原始类型:数值 字符串 布尔型 undenfined null
    undefined类型就是undefined
    null一定是一个对象
    2、复合类型:将原始值以某种规则进行组合,就构成了复合类型
    也叫引用类型:对象object,数组,函数
    既然函数是对象,那么对象就允许添加属性或方法
    1. function getName(){}
    2. getName.userName="perper";
    3. console.log(getName.userName);
    输出的就是perper

通常只有相同类型的数据才在一起参与计算,这样的运算才有意义 比如100+100
+ 除了表示加法,也是字符串的拼接运算符
== 也会触发自动类型转换,它是非严格判断,它只检查值,不检查类型。建议使用”===”,它是要求值相等 且类型也相等,它不会触发自动类型转换。
console.log(100 == “100”);

函数与高阶函数,实例演示;

一般函数分两步:
声明:

  1. function test(){}

调用:

  1. test();

函数允许重写,或者说是函数声明提升

  1. <script>
  2. function getName(name){
  3. console.log("welcom to :", name)
  4. }
  5. console.log(getName("xxxxx"));
  6. function getName(name){
  7. console.log("欢迎:", name);
  8. }
  9. </script>

上述代码输出的是欢迎xxxxx

如果不希望函数提升,必需先声明在使用 用匿名函数

  1. let getName = function(name){
  2. console.log(name);
  3. }

匿名函数就是将一个函数的声明作为值赋值给一个变量或常量,然后通过这个变量或常量来引用这个函数的声明

函数的参数

函数都是单值返回

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

如果只给一个值 那么返回的就是NaN

  1. console.log(sum(1));


我们也可以给函数一个默认参数

  1. sum = function(a, b=1){
  2. return a+b;
  3. }
  4. console.log(sum(1));

归并参数

归并参数,rest语法,将所有参数压到一个数组中来简化参数的获取过程

  1. let sum = function(...arr){
  2. console.log(arr);
  3. }
  4. console.log(sum(1,2,3,4,5,6,7));


这样得到的参数怎么相加?可以使用for进行遍历,也可以使用reduce()

  1. let t=0;
  2. sum = function (...arr) {
  3. for (let i = 0; i < arr.length; i++) {
  4. t += arr[i];
  5. }
  6. return t;
  7. };
  8. console.log(sum(1, 2, 3, 4, 5, 6, 7));
  9. sum = function (...arr) {
  10. return arr.reduce((p, c) => p + c); //28
  11. };
  12. console.log(sum(1, 2, 3, 4, 5, 6, 7));

高阶函数 偏函数 纯函数 箭头函数 立即执行函数

高阶函数

使用函数作为参数,或者将函数作为返回值。

  1. fucntion demo(f){
  2. reuturn f;
  3. }
  4. }
  5. console.log(demo(function(){}));

  1. function demo() {
  2. return function () {
  3. return "abc";
  4. };
  5. }
  6. let a = demo();
  7. console.log(a);
  8. console.log(a());


函数作为参数 也叫回调函数。

偏函数

  1. function sum(a,b,c,d){
  2. return a+b+c+d;
  3. }
  4. console.log(sum(1,2,3,4));

我们可以将此函数进行柯里化 内层函数可以访问外层函数

  1. let sum = function(a,b){
  2. return function(c,d){
  3. return a+b+c+d;};
  4. };
  5. let f1 = sum(1,2);
  6. console.log(f1(3,4));

  1. let sum = function (a) {
  2. // 柯里化
  3. return function (b) {
  4. return function (c) {
  5. return function (d) {
  6. return a + b + c + d;
  7. };
  8. };
  9. };
  10. };
  11. let res = sum(1)(2)(3)(4);
  12. console.log(res);

结果都是一样的

纯函数

纯函数就是不调用自身之外的参数

  1. //这个就不是纯函数 他调用了自身之外的参数c
  2. let c= 199;
  3. function sum(a,b){
  4. return a+b+c;
  5. }
  6. //这个是纯函数
  7. function sum(a,b){
  8. return a+b;
  9. }

箭头函数

匿名函数,可以使用箭头函数来简化

  1. let sum = function(a,b){
  2. return a+b;
  3. }
  4. let sum = (a,b) => {return a+b};
  5. //如果函数体只有一句参数 可以删除{} 并且自带return
  6. let sum = (a,b) => a+b;
  7. //如果只有一个参数,连参数列表的圆括号 都可以删除 推荐括号加上,带上去可以容易看出来不是个变量 而是参数
  8. let tips = name => console.log(name);

注意:如果函数中要使用到this的时候,就不要用箭头函数了 箭头函数不支持this,所以箭头函数不能当构造函数用。

立即执行函数

就是声明调用二合一。
模板 ()()

  1. //一个普通函数
  2. function sum(a,b){
  3. return a+b;
  4. }
  5. //转换成立即执行函数
  6. (function sum(a,b){
  7. return a+b;
  8. })(1,2);

更多相关文章

  1. js引入方式、变量与常量的声明与使用方式、函数与高阶函数,实例演
  2. 调用函数以及常用模块
  3. 20210104 递归
  4. 20210108 装饰器详解
  5. 20210111 装饰器之案例剖析
  6. JavaScript基础之 变量与常量的声明、函数 箭头函数
  7. 分位数回归, Oaxaca分解, Quaids模型, 非参数估计程序
  8. 0331作业
  9. 如何在 Apache Hive 中解析 Json 数组

随机推荐

  1. C++解决方法:多线程同步经典案例之生产者
  2. C++---浅拷贝、深拷贝、写时拷贝讲解(附代
  3. 第六章C++:函数基础与应用
  4. C#入门经典学习阶段小结(凌乱)
  5. C#使用Newtonsoft的Json.NET进行对象的序
  6. 第五章C++:语句的相关介绍
  7. C#_调用封装的一个类实现导出Excel表格的
  8. C# 使用NPOI生成Word文档(按照模板)
  9. 第四章C++:表达式概念-运算符的应用
  10. 如何看待C#中的out和ref?探讨它们之间的区