• 为什么浏览器控制台(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

  • 相关阅读:
    远程调用之@FeignClient注解属性说明
    java毕业设计发电站mybatis+源码+调试部署+系统+数据库+lw
    jmeter 用户自定义变量
    wpf中prism框架
    Vue封装Axios实现全局的loading自动显示效果
    RFID电子标签的分类
    字节面试遇到的一个超级复杂的输出题,前端人必看系列,搞定之后再也没有输出题可以难倒你
    从0到一搭建Kafka-单机版-通过单机版zookeeper配置
    RockTree TOKEN2049 Party爆火,一场千亿规模的“超级聚会”
    Docker下Jenkins打包java项目并部署
  • 原文地址:https://blog.csdn.net/cnds123/article/details/128014970