js的学习记录

 变量声明且赋值

console.log(typeof+'123')number

let i=1

++在前则先自加 再使用 

console.log(++i + 2)// 4

console.log(i++ + 2)//3

自增常用来技术,用来计算多少次

let i=1

console.log(i++ + ++i + i)

i=1 i=2  ++i=3  i=3

1+3+3=7

  • 比较运算符

问题:三种等号之间的区别

= 是赋值号 左边必须是一个容器 赋值时左边无效

== 左右两边是否相等

=== 左右 两边是否类型和值相等

console.log(3>5) //false

console.log(5 == 5) //==只要值一样就成立,和数据类型无关 

开发时经常使用 相等的时候使用 === 值和数据类型都一样

不相等 !== 左右两边是否不全等

字符串可以比较 比较的时字符串的ASCII码

NAN不等于任何值,包括它本身

小数的比较有精度 问题,最好不要相比较

不同类型之间的比较会发生隐式转换

变比较运算符返回的结果时true和false

入门容易 理解难 精通更难

  • 逻辑运算符

逻辑与 一假全假 逻辑或 一真全真 逻辑非 取反 

&& 左边是false就短路 逻辑与

|| 右边是true就短路 逻辑或

逻辑运算符的短路 只要出现结果可以确定的情况就不在计算下去

数字0是假的,其余的都是真的

字符串 空为假 其余 都是真的

console.log(undefined && 20) //undefined

正常执行的话是以后面为准

逻辑或相反

一个变量有定义没有给值,默认是undefined

两个未知的数相加结果是NAN

逻辑或短路

三元运算符

条件?满足条件执行的代码:不满足条件执行的代码

函数

函数有返回值,用关键字return

return 后面不接数据或者函数内不屑return ,函数的返回值是undefined

return能理解结束当前函数,所以return后面的数据不要换行写

函数的作用域

/ 一代程序代码中所用到的此名称并不总是有效和可用的,而限定这个名字的可用性代码范围就是
这个名字的作用域,
// 作用域的使用提高了程序逻辑的局部性,
// 增强了程序的可靠性,减少了名字的冲突

全局作用域

全局有效 在任何区域豆可以访问和修改

局部作用域

作用域函数内的代码环境,就是局部作用这,因为跟函数有关,所以也称是函数作用域

局部变量智能在当前函数内部访问和修改

块级作用域

有{}包括,if语句和for语句里面的{}等

只能在快作用访问,不能跨快访问,也不能跨函数访问

变量有一个注意点就是

如果函数内部或者块级作用域内部,变量没有声明,直接赋值的话,是全局变量

if(true){
    num=10
}
console.log(num)

if(true){
     let num=10
}
console.log(num)

形参是局部变量
function f(x,y) {
    document.write(x+y)
}
f(1,2)
console.log(x)

 

变量访问原则

只要是代码就至少有一个作用域

写在函数内部的局部作用域

如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域

根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定那些数据能被内部函数访问,就称作作用域链

function f1() {
    let num=123
    function f2() {
        let num=0
        console.log(num)
    }
    f2()
}
let num=456
f1()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值