无法访问Javascript函数中的默认值

无法访问Javascript函数中的默认值,javascript,Javascript,如果未定义“char”,我将绘制一个以“#”作为默认值的三角形。 当我定义“char”时,我得到了用这个特定值绘制的三角形 如果定义了“char”,则必须使用“char”中的字符绘制三角形,否则应使用默认值“#” 我错过了什么或做错了什么 函数三角形(大小,字符=0){ 如果(字符类型==='undefined'){ 让hashKey=“#” while(hashKey.length如果要为char指定默认值,可以在参数定义中执行此操作: 函数三角形(大小,字符='#'){ 让hashKey=

如果未定义“char”,我将绘制一个以“#”作为默认值的三角形。 当我定义“char”时,我得到了用这个特定值绘制的三角形

如果定义了“char”,则必须使用“char”中的字符绘制三角形,否则应使用默认值“#”

我错过了什么或做错了什么

函数三角形(大小,字符=0){
如果(字符类型==='undefined'){
让hashKey=“#”

while(hashKey.length如果要为
char
指定默认值,可以在参数定义中执行此操作:

函数三角形(大小,字符='#'){ 让hashKey=char
while(hashKey.length如果要为
char
指定默认值,可以在参数定义中执行此操作:

函数三角形(大小,字符='#'){ 让hashKey=char
当(hashKey.length在参数声明中使用默认初始化器
=0
时,
char
将永远不会被取消定义

你会想写的

function triangle(size, char) {
    if (typeof char === 'undefined') {
        char = "#"
    }
    let hashKey = char;
    while (hashKey.length <= size) {
        console.log(hashKey);
        hashKey += char; 
    }
}
函数三角形(大小,字符){
如果(字符类型==='undefined'){
char=“#”
}
让hashKey=char;

当(hashKey.length在参数声明中使用默认初始化器
=0
时,
char
将永远不会被取消定义

你会想写的

function triangle(size, char) {
    if (typeof char === 'undefined') {
        char = "#"
    }
    let hashKey = char;
    while (hashKey.length <= size) {
        console.log(hashKey);
        hashKey += char; 
    }
}
函数三角形(大小,字符){
如果(字符类型==='undefined'){
char=“#”
}
让hashKey=char;

while(hashKey.length调用函数时,不必在参数中声明'char'


只需将其设置为“函数三角形(大小,字符)”,并将条件更改为“if(!char)”。

调用函数时,不必在参数中声明“char”


只需将其设置为“函数三角形(大小,字符)”,并将条件更改为“if(!char)”。

使用参数声明中的默认初始化器
=0
char
将永远不会被未定义。
char
永远不会
未定义(通过在调用中省略它或显式传递
未定义的
),它会自动分配默认值
0
。因此
if
的第一个分支将永远不会为真。是的,我看到了,谢谢,但是如何使它成为可选值呢?使用
char='#'
而不是
char=0
只是不要分配默认值
函数(三角形,char){…
或将char设置为所需的值
函数三角形(大小,char='#'){…
而不是使用参数声明中的默认初始化器
=0
char
将永远不会未定义。
char
永远不会
未定义
(通过在调用中省略它或显式传递
未定义的
),它会自动分配默认值
0
。因此
if
的第一个分支将永远不会为真。是的,我看到了,谢谢,但是如何使它成为可选值呢?使用
char='#'
而不是
char=0
只是不要分配默认值
函数(三角形,char){…
或将char设置为所需的值
函数三角形(大小,char='#'){…