基础知识备忘
&&和||
a&&b 一个条件为false就不再判断
a||b 一个条件为true就不再判断
函数的参数
参数相当于是默认声明了的,内部不能重复声明(针对let和const)同名变量
形参相当于是声明了一个var的变量
在之前的学习中,了解到JS中对于形参的要求十分宽松。是否全部传入都可以运行,只不过没传入的会是undefined。这在C系语言里面是不能实现的。
在ES6中,参数可以设置默认值
function go(a,b='qwer'){
}
这样对于一些固定值就可以减少代码量。
那么将参数和解构赋值结合会有什么效果呢?
如前面学习所知,结构赋值两侧的结构要匹配上,所以有时候参数就算有默认值,也不能不传。
比如:
function go({
x = 2,y = 2}){
console.log(x,y)};
go();
上面这种情况就会报错,而且经过测试发现,默认值里面再嵌套默认值是会报错的。
参数的length属性
会返回没有默认值参数的个数。
函数的name属性
对于没有命名的函数(就是直接new Function()生成的函数),他的name是anonymous(就是匿名的意思)。
如果是用bind()方法改变了this指向的函数,那么name属性会是bound+函数名。
重点:作用域
之前学习过一个自由变量的概念,就是当要用到一个变量时,如果当前作用域中没有,就会往外部作用域找这个变量。(注意是往外,这个在一般的例子中很容易理解,但是在参数中就容易出错)
let x = 1;
function go(y = x){
let x = 2