一 变量的命名
# * 变量命名规则(必须遵守,不遵守会报错)
* 由字母、数字、下划线、$符号组成,不能以数字开头
* 字母区分大小写
* 不能是关键字和保留字
* 关键字指的是js中有特殊功能的小词语,比如var、for等
* 保留字指的是现在没有特殊功能,但是将来新语法中有可能作为关键字使用
*
* 变量命名规范(建议遵守的,不遵守不会报错)
* 变量名必须有意义
* 遵守驼峰命名法
二 js的数据类型
1. 简单数据类型 (基本数据类型)
* 1.1 数字类型(number): 所有的整数和浮点数
*
* 1.2 字符串类型(string): 在 JS 中, 只要是引号包裹的内容, 统称为字符串
*
* 1.3 布尔类型(boolean): 表明 对/错(真/假)
*
* 1.4 undefined类型 (undefined): 表明未定义, 通常我们不会给一个变量赋值为 undefined, 因为 变量定义但不赋值就是一个 undefined
*
* 1.5 null类型(null): 表明为 空对象指针 (空), 一般很少使用, 但是如果创建了一个对象, 但 是不知道对象的值是什么的时候可能会给一个 null
2. 复杂数据类型 (引用数据类型)
三 数据类型的检测
1 为什么要检测类型?
* 在 JS 中, 一个变量内部保存的值 是可以任意更改的
*
* 所以在使用的时候为了放置 因为数据类型不对, 导致的错误, 所以需要在使用前 检测一下数据的类型
*/
// var box = 100
// // 300 行
// box = '10086'
// // 800 行
// box = true
// 案例代码, 看不懂没关系, 只能用来参考,但是不能运行, 会报错
// getUserInfo().then(res => {
// console.log(res)
// })
/**
* getUserInfo 是获取用户详细信息的一个接口函数, 说白了, 你通过上述的代码能够得到用户的信息
*
* 用户的信息具体数据存在了 res 这个变量中
*
* 在当前案例中我们并不能准确的得知 res 的类型是一个数字还是字符串, 还是布尔值
*
* 所以需要判断/检测一下数据类型
2 数据类型判断的语法
*
* 需要借助一个关键字 typeof
*
* 假设要检测的变量名为 box
* 1. typeof(box)
* 2. typeof box
*/
var box = '我是一个字符串类型的数据'
var num = 10086
console.log(typeof (null))
四 数据类型转换(Number)
*
* JS 转换的时候 任意类型都能够转换为数字使用, 主要是字符串转数字
*
*
* 1. 借助一个 转型函数 Number(数据)
*
* 2. parseInt(数据)
* 3. parseFloat(数据) 参考 上述的 parseInt 自己整理练习
*
* 4. 开发中我最喜欢的一个 方式
* 变量/数据 - 0
*/
// 1. Number
// var box = '10086'
// console.log('box 原本的数据类型', typeof(box), box)
// var newBox = Number(box)
// console.log('box 通过转型函数转换后的值', typeof(newBox), newBox)
// 1.1 字符串:纯数字字符串转为对应数字,空字符串和空白字符串转为0,非空非纯数字字符串转为NaN
// console.log(Number('')) // 空字符串 --- 0
// console.log(Number(' ')) // 空白字符串 --- 0
// console.log(Number('qwertyui')) // 没有数字的字符串 --- NaN 此时已经将这个字符串转换为数字类型了, 但是没有一个合适的数字能够表达他, 所以使用一个统一的 NaN
// console.log(Number("123456789")) // 只有数字的字符串 --- 123456789 直接转换成数字了
// 1.2 布尔值:true转为1,false转为0
// console.log(Number(true)) // 1
// console.log(Number(false)) // 0
// 1.3 undefined:转为NaN null:转为0
// console.log(Number(undefined)) // NaN
// console.log(Number(null)) // 0
// 2. parseInt
// 2.1 parseInt 如果传递的是一个数字, 那么会忽略小数点以后的所有内容
// console.log(parseInt(100))
// console.log(parseInt(100.666))
// 2.2 如果不是数字打头的字符串,会转换为NaN
// console.log(parseInt('')) // 空字符串 --- NaN
// console.log(parseInt(' ')) // 空白字符串 --- NaN
// console.log(parseInt('!@#$%^&')) // 非空非空白字符串 --- NaN
// console.log(parseInt('qwerty')) // 非空非空白字符串 --- NaN
// console.log(parseInt('qwerty10086')) // 非空非空白字符串 --- NaN
// 2.3 字符串中,必须是纯数字字符串或者数字字符开头的字符串,才能转换为正常数字,且只取整数部分
// console.log(parseInt('10086qwerty')) // 字符串中开头为数字, 那么直接保留数字并忽略数字以后的所有内容 --- 10086
// console.log(parseInt('10086qwe999rty')) // 字符串中开头为数字, 那么直接保留数字并忽略数字以后的所有内容 --- 10086
// console.log(parseInt('100')) // 直接将字符串中的数字转为 数字类型
// console.log(parseInt('100.10086')) // 直接将字符串中的数字转为 数字类型
// parseFloat 请参考笔记和上述内容补全代码
// 推荐使用: 数据 - 0; 原因等讲到运算符的时候在解释
var box = '10086'
console.log(box)
console.log(box - 0)
五 数据类型转换(String)
* 转字符串类型
* 1. 变量/数据.toString()
* 问题: undefined 和 null 不能使用
*
* 2. String(变量/数据)
* 什么类型都能转换为 x
*
* 3. 变量/数据 + ''
* 原理讲到 运算符的时候再说
*/
// 1. 变量/数据.toString()
// var box = 100
// console.log('box 原本的值: ', typeof (box), box)
// console.log('box 转换数据类型后: ', typeof (box.toString()), box.toString())
// 布尔值的转换
// console.log(typeof(true), typeof(true.toString()))
// console.log(true, true.toString())
// 请书写 false 的转换
// undefined 不能使用 toString 去转换
// console.log(undefined.toString())
// var und = undefined
// console.log(und)
// console.log(und.toString())
// null 也不能通过 toString 转换
// console.log(null.toString())
// 2. String(变量/数据)
// console.log(typeof(undefined), typeof(String(undefined)))
// console.log(typeof(null), typeof(String(null)))
// console.log(typeof(String(100)))
// console.log(typeof(String(true)))
// 3. 变量/数据 + ''
console.log(typeof(undefined), typeof(undefined + ''))
console.log(typeof(null), typeof(null + ''))
六 数据类型转换(boolean)
转布尔类型
* 一般开发的时候不会主动的转换布尔类型
* 一般是隐式转换, 也就是由 JS 帮我们完成了数据的转换, 一般做判断的时候比较常见
*
* 1. 借助一个转型函数 Boolean(变量/数据)
*
* 2. !!变量/数据
* 一个! 表示得到这个数据取反后的布尔值
*/
console.log(Boolean(undefined))
console.log(!undefined)
console.log(!!undefined)
七 运算符
*JS 的运算符 也叫操作符, 是 JS 中 发起一个运算的最简单的方式
1.算术运算符
* + - * / %
* 加减乘除取余
*
* 运算符本身就是给 数字类型使用的
*/
// console.log(1 + 1)
// console.log(undefined + null)
// console.log(1 + '1')
2.赋值运算符
*
* = 赋值号
*
* += 当要给一个变量重新赋值, 赋值为他本身加一个内容, 就可以使用 +=
*/
// +=
var a = 100
// a = a + 500
a += 500
console.log(a)
// -=
var b = 100
// b = b - 50
b -= 50
console.log(b)
// *=
var c = 10
// c = c * 10
c *= 10
console.log(c)
// /=
var d = 9
d /= 3
console.log(d)
// %=
var q = 9
q %= 4
console.log(q)
3.比较运算符
* 大于 >
* 小于 <
* 大于等于 >=
* 小于等于 <=
*
* 等于
* == 对比两边是否相等, 不会区分数据类型 了解或者特殊情况下书写
* === 对比两边是否相等, 区分数据类型 推荐写 ===
* 一定要注意, 等于 最少要两个 == 千万不要写成 =
*
* 不等于
* != 对比两边是否不相等, 不会区分数据类型
* !== 对比两边是否不相等, 区分数据类型 推荐写 !==
*/
// console.log(100 > 99) // true
// console.log(100 < 99) // false
// console.log(100 < 100) // false
// console.log(100 > 100) // false
// console.log(100 >= 100) // true
// console.log(1 == 1) // true
// console.log(1 === 1) // true
// console.log(1 == '1') // true
// console.log(1 === '1') // false
console.log(100 != 100)
console.log(100 != 99)
console.log(100 !== 100)
console.log(100 !== '100') // 因为区分数据类型, 所以 条件成立, 返回 true
console.log(100 != '100') // 不区分类型, 条件不成立, 返回 false