• JavaScript


    目录

    一,JavaScript

    1.什么是javascript

    2.作用:

    3.HTML CSS,和JS之间的关系

    4.Javascript运行过程

    5.javascript的组成

    二,javascript的书写

    1.行内式

    2.内嵌式

    3.外部式

    4.注释

    5.输入输出

    (1).输入:prompt

    (2).输出:alert

    (3).输出:console.log

    三,语法概览

    1.基本用法

    (1).创建变量

    (2).使用变量

    2.动态类型

    3.基本数据类型

    (1).number数字类型

    (2).string字符串类型

    (3).boolean布尔类型

    (4).undefined未定义数据类型

    (5).null空值类型

    4.运算符

    5.条件语句

    6.循环语句

    7.数组

    (1).创建

    (2).赋值

    (3).新增数组元素

    (4).删除数组中的元素

    8.函数

    (1).语法格式

    (2)参数

    (3).函数表达式

    (4).作用域

    (5).作用域链

    9.对象

    (1).使用 { } 创建对象

    (2).使用new Object 创建对象

    (3). 使用 构造函数 创建对象

     四,java和javascript的区别


    一,JavaScript

    1.什么是javascript

    一种通过解释器运行的脚本语言,主要在客户端(浏览器)上运行

    2.作用:

    网页开发(更复杂的特效和用户交互)
    网页游戏开发
    服务器开发(node.js)
    桌面程序开发(Electron, VSCode 就是这么来的)
    手机 app 开发

    3.HTML CSS,和JS之间的关系

    HTML: 网页的结构(骨)
    CSS: 网页的表现(皮)
    JavaScript: 网页的行为(魂)

    4.Javascript运行过程

    代码保存在硬盘上,再通过文件浏览器把.html文件加载在内存中,解析成进制后被CPU加载并执行

    硬盘——>内存——>CPU:这一系列操作都由浏览器执行

    浏览器:渲染引擎+js引擎

    5.javascript的组成

    ECMAScript( ES): JavaScript 语法,为JS引擎的标准
    DOM: 页面文档对象模型, 对页面中的元素进行操作
    BOM: 浏览器对象模型, 对浏览器窗口进行操作

    二,javascript的书写

    最基础格式,嵌入到 HTML 的 script 标签中.

    1.行内式

    直接嵌入到 html 元素内部

    2.内嵌式

    写到 script 标签中

    3.外部式

    写到单独的.js文件中

    alert("hehe");

    注意:这种情况下 script 标签中间不能写代码. 必须空着:

    4.注释

    1.单行注释

    // 

    2.多行注释

    /*   */

    5.输入输出

    (1).输入:prompt

    // 弹出一个输入框
    prompt("请输入您的姓名:");

    (2).输出:alert

    // 弹出一个输出框
    alert("hello");

    (3).输出:console.log

    //控制台打印一个日志(供程序员看)
    console.log("这是一条日志");

    三,语法概览

    1.基本用法

    (1).创建变量

    var name = 'zhangsan';
    var age = 20;

    (2).使用变量

    var name = prompt("请输入姓名:");
    var age = prompt("请输入年龄:");
    var score = prompt("请输入分数");
    alert("您的姓名是: " + name + "\n" + "您的年龄是: " + age + "\n" + "您的分数是: " +
    score + "\n");

    2.动态类型

    1) JS 的变量类型是程序运行过程中才确定的(运行到 = 语句才会确定类型)
    2) 随着程序运行, 变量的类型可能会发生改变.

    var a = 10;   // 数字
    a = "hehe";   // 字符串

    3.基本数据类型

    number: 数字. 不区分整数和小数.
    boolean: true 真, false 假.
    string: 字符串类型.
    undefined: 只有唯一的值 undefined. 表示未定义的值.
    null: 只有唯一的值 null. 表示空值.

    (1).number数字类型

    ①JS 中不区分整数和浮点数

    ②二进制数字用八/十六进制表示

    var a = 07;    // 八进制整数, 以 0 开头
    var b = 0xa;   // 十六进制整数, 以 0x 开头
    var c = 0b10;   // 二进制整数, 以 0b 开头

    ③特殊的数字值

    Infinity: 无穷大, 大于任何数字. 表示数字已经超过了 JS 能表示的范围.
    -Infinity: 负无穷大, 小于任何数字. 表示数字已经超过了 JS 能表示的范围.
    NaN: 表示当前的结果不是一个数字.

    var max = Number.MAX_VALUE;
    // 得到 Infinity
    console.log(max * 2);
    // 得到 -Infinity
    console.log(-max * 2);
    // 得到 NaN
    console.log('hehe' - 10);

    注意:
    1. 负无穷大 和 无穷小 不是一回事. 无穷小指无限趋近与 0, 值为 1 / Infinity
    2. 'hehe' + 10 得到的不是 NaN, 而是 'hehe10', 会把数字隐式转成字符串, 再进行字符串拼接.
    3. 可以使用 isNaN 函数判定是不是一个非数字

    (2).string字符串类型

    当字符串内含引号如何表示?

    1.交替搭配单双引号表示

    var msg = "My name is 'zhangsan'";   
    var msg = 'My name is "zhangsan"'; 

    2.使用转义字符\

    var msg = "My name is \"zhangsan\""; 

    使用.length方法求长度

    直接使用+拼接字符串

    (3).boolean布尔类型

    0、1

    (4).undefined未定义数据类型

    未被初始化过

    var a;
    console.log(a)

    //加字符串

    结果为字符串拼接 undefined10

    //加数字

    结果为NaA

    (5).null空值类型

    var b = null;
    console.log(b + 10);   // 10
    console.log(b + "10");  // null10

    4.运算符

    (1).算术运算符
    +
    -
    *
    /
    %


    (2).赋值运算符 & 复合赋值运算符
    =
    +=
    -=
    *=
    /=
    %=

    (3).自增自减运算符
    ++: 自增1
    --: 自减1


    (4).比较运算符
    <
    >
    <=
    >=
    == 比较相等(会进行隐式类型转换)
    !=
    === 比较相等(不会进行隐式类型转换)
    !==


    (5).逻辑运算符
    用于计算多个 boolean 表达式的值.
    && 与: 一假则假
    || 或: 一真则真
    ! 非


    (6).位运算
    & 按位与
    | 按位或
    ~ 按位取反
    ^ 按位异或


    (7).移位运算
    << 左移
    >> 有符号右移(算术右移)
    >>> 无符号右移(逻辑右移)

    5.条件语句

    与java基本一致

    if - else

    条件?表达1:表达式2

    while

    switch-case-default

    6.循环语句

    与java基本一致

    while

    for

    continue

    break

    7.数组

    (1).创建

    (1).使用new关键字

    var arr = new Array();

    (2).直接创建(字面量)

    var arr = [];
    var arr2 = [1, 2, 'haha', false];

    (2).赋值

    var arr = ['小猪佩奇', '小猪乔治', '小羊苏西'];
    console.log(arr);
    console.log(arr[0]);
    console.log(arr[1]);
    console.log(arr[2]);
    arr[2] = '小猫凯迪';
    console.log(arr);
    console.log(arr[3]);  // undefined
    console.log(arr[-1]);  // undefined

    注意: 不要给数组名直接赋值, 此时数组中的所有元素都没了.

    var arr = ['小猪佩奇', '小猪乔治', '小羊苏西'];
    arr = '小猫凯迪';

    (3).新增数组元素

    1. 通过修改 length 新增

    相当于在末尾新增元素. 新增的元素默认值为 undefined

    var arr = [9, 5, 2, 7];
    arr.length = 6;
    console.log(arr);
    console.log(arr[4], arr[5]);

    2.通过下标新增

    var arr = [];
    arr[2] = 10;
    console.log(arr)

    3.使用push进行追加

    var arr = [9, 5, 2, 7, 3, 6, 8];
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
      if (arr[i] % 2 != 0) {
        newArr.push(arr[i]);
     }
    }
    console.log(newArr);

    (4).删除数组中的元素

    使用 splice 方法删除元素

    var arr = [9, 5, 2, 7];
    // 第一个参数表示从下表为 2 的位置开始删除. 第二个参数表示要删除的元素个数是 1 个
    arr.splice(2, 1);
    console.log(arr);
    // 结果
    [9, 5, 7]

    8.函数

    (1).语法格式


    function 函数名(形参列表) {
      函数体
      return 返回值;
    }

    eg:

    function hello() {
      console.log("hello");
    }
    // 如果不调用函数, 则没有执行打印语句
    hello();

    (2)参数

    可以不匹配

    1) 如果实参个数比形参个数多, 则多出的参数不参与函数运算

    sum(10, 20, 30); // 30

    2) 如果实参个数比形参个数少, 则此时多出来的形参值为 undefined

    sum(10); // NaN, 相当于 num2 为 undefined.

    (3).函数表达式

    var add = function() {
    var sum = 0;
      for (var i = 0; i < arguments.length; i++) {
        sum += arguments[i];
     }
      return sum;
    }
    console.log(add(10, 20));       // 30
    console.log(add(1, 2, 3, 4));     // 10

    console.log(typeof add);         //function

    (4).作用域

    某个标识符名字在代码中的有效范围.
    在 ES6 标准之前, 作用域主要分成两个
    全局作用域: 在整个 script 标签中, 或者单独的 js 文件中生效.
    局部作用域/函数作用域: 在函数内部生效.

    // 全局变量
    var num = 10;
    console.log(num);


    function test() {
      // 局部变量

    var num = 20;
      console.log(num);
    }


    function test2() {
      // 局部变量
      var num = 30;
      console.log(num);
    }


    test();
    test2();
    console.log(num);
    // 执行结果
    10
    20
    30
    10

    注意:

    1.创建变量时如果不写 var, 则得到一个全局变量

    (5).作用域链

    函数可以定义在函数内部
    内层函数可以访问外层函数的局部变量

    var num = 1;
    function test1() {
      var num = 10;


      function test2() {
        var num = 20;

        console.log(num);
     }


      test2();
    }
    test1();
    // 执行结果
    20

    9.对象

    在 JS 中, 字符串, 数值, 数组, 函数都是对象.

    每个对象中包含若干的属性和方法.

    (1).使用 { } 创建对象

    var a = {};  // 创建了一个空的对象
    var student = {
      name: '蔡徐坤',
      height: 175,
      weight: 170,
      sayHello: function() {
        console.log("hello");
     }
    };

    属性和方法使用键值对的形式来组织.

    // 1. 使用 . 成员访问运算符来访问属性 `.` 可以理解成 "的"
    console.log(student.name);
    // 2. 使用 [ ] 访问属性, 此时属性需要加上引号
    console.log(student['height']);
    // 3. 调用方法, 别忘记加上 ()
    student.sayHello();

    (2).使用new Object 创建对象

    var student = new Object(); // 和创建数组类似
    student.name = "蔡徐坤";
    student.height = 175;
    student['weight'] = 170;
    student.sayHello = function () {
      console.log("hello");
    }
    console.log(student.name);
    console.log(student['weight']);
    student.sayHello();

    (3). 使用 构造函数 创建对象

    function 构造函数名(形参) {
      this.属性 = 值;
      this.方法 = function...
    }
     
    var obj = new 构造函数名(实参);

    function Cat(name, type, sound) {
      this.name = name;
      this.type = type;
      this.miao = function () {
        console.log(sound); // 别忘了作用域的链式访问规则
     }
    }


    var mimi = new Cat('咪咪', '中华田园喵', '喵');
    var xiaohei = new Cat('小黑', '波斯喵', '猫呜');
    var ciqiu = new Cat('刺球', '金渐层', '咕噜噜');
    console.log(mimi);
    mimi.miao();

    new 的执行过程:
    1. 先在内存中创建一个空的对象 { }
    2. this 指向刚才的空对象(将上一步的对象作为 this 的上下文)
    3. 执行构造函数的代码, 给对象创建属性和方法
    4. 返回这个对象 (构造函数本身不需要 return, 由 new 代劳了)

     四,java和javascript的区别

    1. JavaScript 没有 "类" 的概念

    2. JavaScript 对象不区分 "属性" 和 "方法"

    3. JavaScript 对象没有 private / public 等访问控制机制

    4. JavaScript 对象没有 “封装”,"继承",“多态”

  • 相关阅读:
    浏览器地址栏输入url地址后发生的一系列事情
    如何判断对象是否是垃圾
    Compress Objects, Not Cache Lines: An Object-Based Compressed Memory Hierarchy
    Flutter图片内存占用过大问题
    经典OJ题:链表中的倒数第K个节点
    R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数据
    Java面试题精选21到31
    酒店数字化转型,就从这4步开始
    EPAI手绘建模APP常用工具栏_1
    【开发者小技巧】6个实用的vscode快捷键
  • 原文地址:https://blog.csdn.net/weixin_63056061/article/details/127676329