JS中prompt()用法问题

JavaScript中prompt()用法
  1. var input=prompt("请输入一个数字",undefined)中第二个空为什么是undefined,表明未定义吗,运行结果还是能输入内容的,那它是不是等同于var input=prompt("请输入一个数字"),即等同于var input=prompt("请输入一个数字","")???undefined在这里有什么特殊含义吗。

  2. var input=prompt("请输入一个数字",undefined)||0;后面或一个0,是什么意思啊?表明如果前面未接收到输入的内容,input就为0吗?

  1. prompt()方法中第一个参数是标题文字,第二个参数是input框的默认值。默认值会进行判断,先转布尔类型,0(number)、""(string)、undefinednullfalse都会转为false,此时默认值就设为""。对于一个函数,如果某字段没传且没设默认值,那么它的值就是undefined。
    // 源码
    declare function prompt(message?: string, _default?: string): string | null;
    
  2. ||"或"运算符,会对符号左边判断,转布尔类型。如上所述,当值为空字符串""时,就会转为布尔类型false,就取右侧值;如果是true,则取左侧值。
  3. 这叫隐式类型转换,在if判断里if(num){}中,num这个值也会被转布尔。如上所述,0(number)、""(string)、undefinednullfalse都会转为false,其它都会转为true,如字符串中"0""false"也是转为true