老师我这样写可以吗?

老师我这样写可以吗?

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <!-- 封装一个createElement函数 -->

    <script>

        const createElement=(x='div',y={cn:'default',cl:'dafault'})=>{

            let html=document.createElement(x);

            html.innerText=y.cn;

            html.className=y.cl;

            return html;

        }

        console.log(createElement());

        console.log(createElement('span'));

        console.log(createElement('a',{cn:'慕课网',cl:'new'}));

    </script>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,因为y={cn:'default',cl:'dafault'}表示给参数y设置默认值为这个对象,当调用函数,第二个参数传入新的对象时,那么,此时的y表示新的对象{cn:'慕课网'},没有cl属性,所以y.cl返回的值为undefined。

可以使用{ cn= 'default', cl= 'dafault' } = {}这种方法,给函数的参数设置默认值为空对象,并对这个空对象进行解构赋值,在解构时设置默认值都为default。函数内部直接使用变量名cn和cl即可。示例:

http://img1.sycdn.imooc.com//climg/609de606099c6bf110120417.jpg

非常抱歉由于老师的疏忽给同学带来不好的学习体验,老师以后会更加严谨一点的。

祝学习愉快~

好帮手慕慕子 2021-05-14 10:20:49

同学你好,可以的,祝学习愉快~

  • 提问者 摩苏尔 #1

    阿这,,老师我这其实写错了。这里有一个bug就是当只给类名或者内容的时候,另一个的默认值并不会生效,而是undefined,比如这样console.log(createElement('a',{cn:'慕课网'}));

    感觉有点敷衍

    2021-05-14 10:34:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师