JS中的与冒号的作用、箭头函数相关的一道题
2024-08-31 07:25:41
相关知识来自于一道题:
使用ES6的箭头函数语法可以直接省略 function
和 return
关键字,比如 function (){return 1;}
就可以简化成 () => 1
, 但是如果需要返回对象时需要加一个括号,比如 () => ({a:1})
, 因为JS解释器会误把大括号当作函数的起始符号,需要加上一个括号。那如果没有这个括号会怎么样呢?
() => {a:1}
会输出什么?还是说会报错?
不管怎么样,直接打开F12先试一下
const f = () => {a:1};
f(); // undefined
返回了undefined,说明代码是能跑的,那又为什么是undefined呢,a和1跑哪去了?
回头查了一下JS中关于冒号的作用,常用的有:
- ?:三元运算
- switch语句
- 对象字面量
另外还有一个不常用容易忘记的:
作为一个label标签,用于与 break 和 continue 配合,让语句跳转到指定的位置,类似 goto 的作用。直接放两个示例,很容易看出它的用途,虽然也不常这么用。
continue
a: for(let i = 0; i < 5; i++){
for(let j = 0; j < 5; j++){
if(j===2) continue a;
console.log(i,j);
}
}
/*
输出结果:
0 0,
0 1,
1 0,
1 1,
...
4 0,
4 1
*/
break
b: for(let i = 0; i < 5; i++){
for(let j = 0; j < 5; j++){
if(j===2) break b;
console.log(i,j);
}
}
/*
输出结果:
0 0,
0 1
*/
到这里就知道为什么返回undefined了,因为 {a:1}
中的 a:
被当成了一个标签,就剩下一个1没有return语句。
除此之外,标签还可以换行写,所以 {a:1}
就等于
{
a:
1
}
因此, () => {a:1,b:2}
是会报错的,因为等价于
{
a:
2,
b:
1
}
再由此可以推断出另一个东西 () => {a:b:c:d:1}
不会报错而是返回undefined
总结
本文全来源于一道与JS语法相关的题目,虽然在开发过程中并没有什么卵用,但是说不定哪天面试就用上了呢?
最后祝大家五一快乐。
参考
JavaScript权威指南(6th)
最新文章
- 大前端学习笔记整理【五】关于JavaScript中的关键字——this
- Leetcode Sum Root to Leaf Numbers
- find常用参数详解
- 黄聪:No &#39;Access-Control-Allow-Origin&#39; header is present on the requested resource解决办法
- Servlet获取简单验证码
- Mac终端命令行提示符格式更改方法
- 【转】Linux Posix Timer使用
- [Everyday Mathematics]20150111
- C#读取Word文档内容代码
- 创建GitHub技术博客
- APIJSON,让接口和文档见鬼去吧!
- U型理论
- 四、Python数据类型(二)
- nginx请求数据超长的问题解决
- 【读书笔记】iOS-处理内存警告
- Linux下Nginx访问web目录提示403Forbidden
- 解决myeclipse2017安装后闪退问题
- MySQL——优化ORDER BY语句
- SharePoint 2016 工作流报错“未安装应用程序管理共享服务代理”
- 关于 ArrayList.toArray() 和 Arrays.asList().toArray()方法
热门文章
- php笔记之:文章中图片处理的使用
- 【JavaScript框架封装】使用Prototype给Array,String,Function对象的方法扩充
- C 语言预编译 #if #else
- kfka学习笔记一:使用Python操作Kafka
- Python Study (01) 之 特殊方法
- Hdu 4280 Island Transport(最大流)
- 【1】按照Django官网,编写一个web app 创建project/配置数据库
- 0x32 约数
- redis配置外部访问
- org/eclipse/jetty/util/component/Container$Listener