es6 初级之---const 和 默认参数
1. const 的定义:
1.1 常量定义的时候要赋值,不赋值是会报错的:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// 常量: 不能被改变值的 量 叫常量
// 1, 常量最开始定义的时候, 要给初始值
// 2, 常量不能被重新赋值
// 3, 常量的作用域是块级的
// 4,个人感觉有点像php 中的define
const a; //报错,没有初始化一个值
</script>
</head>
<body>
</body>
</html>

1.2 定义同时赋值
const a = 10;
console.log(a);

1.3 常量定义之后,不能再次赋值
const a = 10;
a = 100; //报错,不能给常量重新赋值
console.log(a);

1.4 常量是块级作用域
let a = 10;
if (a) {
const b = 100;
console.log(b);
}
console.log(b); //报错,访问不到块级作用域中的常量

1.5 对象常量不能改变:
const user = {
"name": "nihaome",
age: 22
};
user = { //报错,常量不能被重新赋值
"name": 'zhangsan'
}
console.log(user);

1.6 对象常量的属性可以被改变:
const user = {
"name": "nihaome",
age: 22
};
user.name = 'zhangsan';
console.log(user);

2. 默认参数:
2.1 默认参数之一:
function show(a, b) {
a = a || 10;
b = b || 20;
console.log(a, b);
}
show(1, 2);

2.2 默认参数之二:
function show(a, b) {
a = a || 10;
b = b || 20;
console.log(a, b);
}
show();

2.3 默认参数之三:
function show(a, b) {
a = a || 10;
b = b || 20;
console.log(a, b);
}
show(1);

2.3 默认参数之四:
function show(a, b) {
a = a || 10;
b = b || 20;
console.log(a, b);
}
show(0, 0); //0会转成false

默认参数:有传入参数值的时候,就使用传递的参数;没有传递参数,就使用默认参数
3. 表达式:先判定,再赋值
function show(a, b) {
a = typeof a === 'undefined' ? 10 : a;
b = typeof b === 'undefined' ? 20 : b;
console.log(a, b);
}
show(undefined, 30);
show();

4. 默认参数
function show( a = 10, b = 20, c = 30 ){
console.log( a, b, c );
}
show(); // 10, 20, 30, 没有传递参数就使用默认值
show( 100 ); // 100, 20, 30, 没有传递参数就使用默认值
show( 100, 200 ); // 100, 200, 30, 没有传递参数就使用默认值
show( 100, 200, 300 ); // 100, 200, 30, 没有传递参数就使用默认值

5. 默认参数 undefined
function show(name, age = 22, sex) {
console.log(name, age, sex);
}
//函数在没有传值得时候,默认为undefined
show(); //undefined,22,undefined 使用name,age,sex的默认参数
//函数显示的传递undefined,相当于没有传递参数,所以age用默认值22
show(undefined, undefined, undefined); //undefined,22,undefined
//函数传递null的时候,不会等于undefined,相当于传null值, 会把age的默认值覆盖
show(undefined, null, undefined); //undefined, null, undefined

6. 非严格模式下,参数会同步到arguments
//在非严格模式下,参数的修改会同步到arguments
function show(name, age) {
console.log(name == arguments[0]); //true
console.log(age == arguments[1]); //true
name = 'zhangsan';
age = 30;
console.log(name == arguments[0]); //true
console.log(age == arguments[1]); //true
}
show('hehheh', 22);

7. 严格模式下,参数与arguments 不同步(严格模式,在代码前加入一行"use strict")
"use strict";
function show(name, age) {
console.log(name == arguments[0]); //true
console.log(age == arguments[1]); //true
name = 'zhangsan';
age = 30;
console.log(name == arguments[0]); //false
console.log(age == arguments[1]); //false
}
show('hehhe', 22);

8.默认参数和arguments:默认参数和arguments 是有差异的
function show(name, age = 22) {
console.log(arguments.length); //1
console.log(name === arguments[0]); //true
console.log(age, arguments[1]); //22, undefined
console.log(age === arguments[1]); //false
name = 'zhangsan';
age = 30;
console.log(name, age, arguments[0], arguments[1]); //zhangsan, 30, nani, undefined
console.log(name == arguments[0]); //false
console.log(age == arguments[1]); //false
}
show('nani');

9. 函数作为默认参数:
function getVal() {
return 10;
}
function add(a, b = getVal()) {
return a + b;
}
//相当于 a = 100, b = 200
console.log(add(100, 200)); //300
//相当于 a = 100, b没有传值, 采用getVal()的返回值10
console.log(add(100)); //110

es6 初级之---const 和 默认参数的更多相关文章
- [js高手之路] es6系列教程 - 函数的默认参数详解
在ES6之前,我们一般用短路表达式处理默认参数 function show( a, b ){ var a = a || 10; var b = b || 20; console.log( a, b ) ...
- 如何在ES5与ES6环境下处理函数默认参数
函数默认值是一个很提高鲁棒性的东西(就是让程序更健壮)MDN关于函数默认参数的描述:函数默认参数允许在没有值或undefined被传入时使用默认形参. ES5 使用逻辑或||来实现 众所周知,在ES5 ...
- ES6扩展——函数扩展之默认参数
1.函数的默认参数 //函数的默认参数 function add(a, b = 999){ console.log(a,b); //1 999 } add(1); 2. 函数的形参可以设置默认值,默认 ...
- ES6新特性(函数默认参数,箭头函数)
ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...
- ES6函数默认参数(Default Parameters)
语言更新时每一个新增的特性都是从千百万开发者需求里提取过来的,规范采用后能减少程序员的痛苦,带来便捷. 我们经常会这么写 function calc(x, y) { x = x || 0; y = y ...
- es6 默认参数、rest参数、扩展运算符
1.默认值 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. function sayHello(name){ //传统的指定默认参数的方式 var name ...
- Delphi函数参数传递 默认参数(传值)、var(穿址)、out(输出)、const(常数)四类
Delphi的参数可以分为:默认参数(传值).var(传址).out(输出).const(常数)四类 可以对比C/C++的相关知识,类比学习. 1.默认参数是传值,不会被改变,例子 function ...
- 深入浅出ES6(五):不定参数和默认参数
作者 Jason Orendorff github主页 https://github.com/jorendorff 不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例 ...
- 深入浅出ES6:不定参数和默认参数
不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数.例如,String.prototype.concat方法就可以接受任意数量的字符串参数.ES6提供了一种编写可变参函数的新 ...
随机推荐
- 在外部怎么调用jquery插件里的function
文章来源:百度知道 问:(function($){函数(){xxxx}})(jQuery),我怎么调用这个函数呢? (function($){ function render(jq){ 这里是jque ...
- Jmeter(四十三)WebSocket Sampler 和 Ajax Request
权利被放出牢笼,就很难再被关入笼中:奴性被唤出来,腰杆和膝盖很难再直起来. ----宅猪<牧神记> websocket: 参考:https://blog.csdn.net/minmint ...
- Mysql 5.7 系列命令 timestamp类型的字段不能设默认值为“0000-00-00 00:00:00” 要设为`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新',
一.show相关命令语句 1.查看表的索引 show index from tbl_name; 1 table:表名 non_unique:索引是非唯一的?.0否,唯一是索引的.1是,是非唯一索引.( ...
- Aspose.Word 输出表格后空格字符丢失的解决方法
将datatable输出到word,执行如下代码. doc.MailMerge.ExecuteWithRegions(outDt); 执行完后发现第一列含前缀空格的字段值,空格字符被自动清除了. 解决 ...
- saliency map [转]
基于Keras实现的代码文档 (图+说明) "Deep Inside Convolutional Networks: Visualising Image Classification Mod ...
- Windows下sbt安装配置
1.下载sbt1.2.8 官网:https://sbt-downloads.cdnedge.bluemix.net/releases/v1.2.8/sbt-1.2.8.tgz 2.配置环境 #SBT_ ...
- CentOS7.3编译hadoop2.7.3源码
在使用hive或者是kylin时,可以选择文件的压缩格式,但是这个需要有hadoop native库的支持,默认情况下,hadoop官方发布的二进制包中是不包含native库的,所以无法使用一些压缩相 ...
- Hadoop Api 基本操作
hadoop环境配置好后,直接可以在window上进行调试.话不多说,直接上源码. package cn.terry; import java.io.FileInputStream; import ...
- windows下使用gethostbyname函数报错无法解析的外部符号
#include <winsock.h> 使用gethostbyname的函数的时候,会显示无法解析的外部符号. 主要问题是因为没有引用WS2_32的lib库 在include上面引用就行 ...
- [SHOI2012]信用卡凸包(计算几何)
/* 考验观察法?? 可以发现最终答案等于所有作为圆心的点求出凸包的周长加上一个圆的周长 向量旋转 (x1, y1) 相较于 (x2, y2) 旋转角c 答案是 (dtx * cosc - dty * ...