• 为什么浏览器控制台(Console)运行JavaScript代码有时会出现“undefined”?


    为什么浏览器控制台(Console)运行JavaScript代码有时会出现“undefined”?

    浏览器“控制台”(console)使用简介

    about:blank是打开浏览器空白页的命令——内置在浏览器中的命令,可以打开浏览器空白页(没有任何内容)。

    打开浏览器,按下 F12键 【或 按 Ctrl+Shift+J (Windows、Linux) 或 Command+Option+J (macOS)】,然后选择 “控制台”(console) 面板,就进入了控制台。进入控制台以后,就可以在提示符(> 符号)后输入代码,然后按回车(Enter键),代码就会执行。如果按Shift + Enter键,就是代码换行,不会触发执行。执行结果显示在<•符号之后。

    浏览器的开发者工具使用介绍https://blog.csdn.net/cnds123/article/details/120822401

    一、在浏览器控制台(Console)运行javascript代码有时会出现“undefined”,为什么?

    在浏览器“控制台”(console)中运行下面两段代码

    代码段1

    1. function fun1() { //定义函数fun1,没有return语句
    2. }
    3. fun1();//调用函数

    代码段2

    1. function fun2() { //定义函数fun2,有return语句
    2. return 'Hello!';
    3. }
    4. fun2(); //调用函数

    运行情况如下:

    先看undefined 是什么?

    JS 有6种基本类型(原始类型):

      String:字符串  

      Number:数值 

      Boolean:布尔值  

      Null:空值  

      Undefined:未定义

    Symbol: (ES2015增加)

    undefined是一个特殊的值,当访问未初始化的变量、不存在的对象属性、不存在的数组元素、没有返回值的函数等时,将接收到一个undefined 的值。例如:

    let number;

    number; //未初始化的变量=> undefined

    let movie = { name: "Interstellar" };

    movie.year; //一个不存在的对象属性=> undefined

    let movies = ["Interstellar", "Alexander"];

    movies[3]; //不存在数组元素 => undefined

    使用没有用return返回值的函数,将接收到一个undefined 的值,可以参看开头的示例。如果你纠结那些示例太简单,下面再给出有点用处的示例,你再运行试试吧:

    计算两个数字的乘积的函数:

    代码1、用return返回乘积的值

    1. function myFun1(a,b)
    2. {
    3. let z=a*b //计算两个数字的乘积
    4. return z;
    5. }
    6. myFun1(2,3)

    代码2、不使用return返回值,而用alert()弹出乘积的值

    1. function myFun2(a,b)
    2. {
    3. z= a*b; //计算两个数字的乘积
    4. alert(z)
    5. }
    6. myFun2(2,3)

    二、为什么console.log()会返回undefined

    如:console.log(1+2);

    console.log方法(method)是用来在控制台输出信息。

    console.log本身是一个函数,函数是可以有返回值的,若不设置返回值,默认返回值为undefined。

    先执行表达式1+2 结果为3,再执行console.log()函数无返回值,默认为undefined

    console.log本身是一个函数

    console.log(typeof(console.log));

    关于typeof运算符(operator)可见 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof

  • 相关阅读:
    Codeforces 1535F 字符串 + 倍增 + BIT
    RTT 发散思维写点随笔录
    一级造价工程师(安装)- 计量笔记 - 第六章第一节电气工程
    嵌入式:驱动开发 Day4
    des加密+base64编码,base64解码+des解密
    请问怎么获取pcord软件?
    Nginx设置Https
    23种设计模式之:命令模式
    LazSerial - 二进制数据传输方式
    Day25、数据库
  • 原文地址:https://blog.csdn.net/cnds123/article/details/128014970