(一)语法 & 基础概念
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
一、JavaScript 变量的命名规则
变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、下划线、美元符号或数字。
- 变量名中不允许使用空格和其他标点符号首个字不能为数字。
- 变量名长度不能超过255个字符。
- 变量名称对大小写敏感y 和 Y 是不同的变量JavaScript 语句和变量都对大小写敏感。
- 变量名必须放在同一行中。
- 不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。
二、Const \ var \ let 定义变量的区别
const定义变量不可以修改而且必须初始化.
- var定义的变量可以修改如果不初始化会输出undefined不会报错.
- let是块级作用域函数内部使用let定义后对函数外部无影响。
三、循环控制语句
For
- For-in
可以任意顺序遍历数组或者对象的可枚举属性 - For-of
不能遍历对象只能遍历带有iterator接口的例如Set,Map,String,Array
可以遍历数组输出的是数组元素值value)
// 对象
const object = { name: 'lx', age: 23 }
// for ... in
for (const key in object) {
console.log(key) // 输出 name,age
console.log(object[key]) // 输出 lx,23
}
// for ... of
for (const key of object) {
console.log(key) // 报错 Uncaught TypeError: object is not iterable
}
// 数组对象
const list = [{ name: 'lx' }, { age: 23 }]
for (const val of list) {
console.log(val) // 输出{ name: 'lx' }, { age: 23 }
for (const key in val) {
console.log(val[key]) // 输出 lx,23
}
}
- While
先判断再执行 - do-while
先执行再判断
四、分支控制语句
-
If else
语句更加灵活通常用于范围判断大于、等于某个范围 -
switch
通常处理case为比较确定值的情况 -
对比
switch语句进行条件判断后直接执行到程序的条件语句效率更高。而if…else语句有几种条件就得判断多少次
当分支比较少if…else语句的执行效率比switch语句更高
当分支比较多时switch语句的执行效率较高而结构更加清晰。
五、判断运算符
=== (绝对等)
不会转换数据类型直接进行比较
- == (模糊等)
先进行类型转换然后再进行比较
区别
在比较类型相同的数据时== 与 === 之间没有任何区别完全一样
在比较不同类型的数据时== 相等运算符会将数据先进行类型转换然后再进行比较。=== 严格等不会转换数据类型直接进行比较。
在比较时结果为真即为 true 结果为假即为 false。
类型转换规则
- 如果等号两边是boolean、string、number三者中任意两者进行比较时优先转换为数字进行比较。
- 如果等号两边出现了null或undefined,null和undefined除了和自己相等就彼此相等
- NaN无论在什么时候都不会等于自己本身判断是不NaN 只能使用isNaN()。
注 : ==判断的特殊情况如下,一个值为undefinned时仍然能通过 == null的判断。
if ( obj.hi == null ) {
}
if ( obj.hi == undefined ) {
}
// 上面两种判断算是以下代码的简写
if ( obj.hi === null || obj.hi === undefined ) {
}
ES6新的方法Object.is 来比较两个值严格相等它与严格比较运算符“===”基本一致不同之处只有两个
- +0不等于-0
- NaN等于自身
代码实现
function is(x, y){
if (x === y) {
// 运行到1/x === 1/y的时候x和y都为0但是1/+0 = +Infinity 1/-0 = -Infinity, 是不一样的
return x!==0 || y!==0|| 1/x===1/y;
} else {
// NaN === NaN 是false这是不对的
// 这里做一个拦截x!==x那么一定是 NaN, y同理两个都是NaN的时候返回true
return x!==x && y!==y;
}
}
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |