商务网站建设实训报告,甘肃省住房和建设厅网站首页,wordpress图片生成插件下载,dede一键更新网站出错js不会检查任何参数类型#xff0c;任何参数都可以作为参数传递 1、对象参数
改变量随便改#xff0c;改对象要看这个对象是不是有多个变量同时指向这个对象
const 用来定义常量#xff0c;只能赋值一次。 变量-------对象-------属性
被const修饰的对象 …js不会检查任何参数类型任何参数都可以作为参数传递 1、对象参数
改变量随便改改对象要看这个对象是不是有多个变量同时指向这个对象
const 用来定义常量只能赋值一次。 变量-------对象-------属性
被const修饰的对象 不能改 可以改 使用对象作为参数
设置默认对象的参数定义以对象为参数的函数
第一种情况不传参数调用函数
function fn2(a{name:沙和尚}){console.log(a, a)a.name 唐僧console.log(a,a)
}fn2()
fn2()
结果 说明无参数调用时候每次调用都会创建一个对象 第二种传已有的对象作为参数
let obj {name:孙悟空}function fn2(a{name:沙和尚}){console.log(a, a)a.name 唐僧console.log(a,a)
}fn2(obj)
fn2(obj)
结果 说明传现有对象进去时候不会再创建新的对象 2、函数参数
因为万物皆是对象函数也是。既然函数能传对象参数那么也能传函数参数
所以
const a (b) {console.log(b,b)
}const c () {console.log(我是c函数)
}a(c)
结果 相当于我们把函数作为参数传递到了a函数里如果不清晰我们也可以把打印语句换成调用作为参数的函数
const a (b) {// console.log(b,b)b()
}const c () {console.log(我是c函数)
}a(c) 结果可以看到c函数被a调用了 复习箭头函数
形式 {}
函数表达式形式const a () {}
箭头函数的参数当且仅当只有一个参数时候可以省略括号不推荐知道即可 箭头函数的代码块里如果只有一条语句的时候可以省略大括号不推荐了解即可 函数返回值小小说一下因为js没有类型所以直接在函数里面return
并且注意在JS中任何值都可以作为返回值使用包括对象和函数之类
如果return后面不跟任何值则相当于返回undefined
如果不写return函数的返回值依然是undefined
return一旦执行函数立即结束这个不用说hh
const a(){return hello
}let b a()
console.log(b)结果 因为箭头函数的返回值可以直接写在箭头后面所以我们可以继续简化
const a()hellolet b a()
console.log(b)
结果是一样的 但是这种省略会出现问题当希望返回的是对象的时候对象定义的外面两个大括号会被识别为定义函数的大括号从而被识别为普通函数的代码块如
const a() {name:这是一个对象}let b a()
console.log(b)结果是undefined 那要怎么解决呢我们再对象外面再加一对圆括号就可以了
const a() ({name:这是一个对象})let b a()
console.log(b)
结果 3、作用域变量的可见区域
作用域有两种
1、全局作用域 -全局作用域在网页运行时候创建在网页关闭时消耗 -所有直接编写到script标签中的代码都位于全局作用域中 -全局作用域中的变量是全局变量可以在任意位置访问
2、局部作用域 - 块作用域 -块作用域是一种局部作用域 -块作用域在代码块执行时创建,代码块执行完毕它销毁 -在块作用域中声明的变量是局部变量只能在块内访问外部无法访问。 作用域链 -当我们使用一个变量时 JS解释器会优先在当前作用域中寻找变量 如果找到了则直接使用 如果没找到则去上一级作用域中寻找找到了则使用 如果没找到则继续去上一级寻找以此类推 如果一直到全局作用域都没找到则报错 xxx is not defined var用来声明变量作用和let相同但是var不具有块作用域 -在全局中使用var声明的变量都会作为window对象的属性保存 -使用function声明的函数都会作为window的额方法保存 -使用let声明的变量不会存储在window而存在一个地方 在局部作用域中如函数中没有用var或let声明属性那么它会自动成为window的属性也就是全局变量