<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 变量声明提升
// 变量声明的提升:你可以提前使用一个稍后才声明的变量,而不会引发异常
// 在执行所有代码前,JS有预解析阶段,会预读所有变量的定义
// console.log(a); //先使用变量 undfiend
// var a= 12;//后定义变量
// 变量声明提升只提升定义,不提升值
//注意:变量声明的提升是JavaScript的特性,所以经常出面试题
//注意:在实际开发时,不要刻意使用变量声明提升特性。一定要先定义并给变量赋初值,然后再使用变量
// 5种基本数据类型的typeof检测结果
// 类型名 typeof检测结果 值举例
// 数字类型 number 5
// 字符串类型 string '慕课网'
// 布尔类型 boolean true
// undefined类型 undefined undefined
// null类型 object null
// Number(数字)类型
//所有数字不分大小、不分整浮、不分正负,都是数字类型
// 特殊的数字型值NaN
// typeof NaN;
// number
// 0除以0的结果是NaN,事实上,在数学运算中,若结果不能得到数字,其结果往往都是NaN
// NaN有一个“奇怪”的性质:不自等。
// String(字符串)类型
// 字符串要用引号包裹,双引号或者单引号均可
// 字符串的拼接
// 加号可以用来拼接多个字符串
// 字符串的length属性
// 字符串的length 属性表示字符串的长度 打点就可以测试属性和显示返回多少长度.
// 字符串的常用方法
// “方法”就是能够打点调用的函数,字符串有丰富的方法
// 方法 功能
// charAt() 得到指定位置字符
// substring() 提取子串
// substr() 提取子串
// slice() 提取子串
// toUpperCase() 将字符串变为大写
// toLowerCase() 将字符串变为小写
// indexOf() 检索字符串
// charAt()方法可以得到指定位置的字符
// substring(a, b)方法得到从a开始到b结束(不包括b处)的子串
//substr (a, b)中,将得到从a开始的长度为b的子串
// substr (a, b)中,a可以是负数,表示倒数位置
// slice(a, b)方法得到从a开始到b结束(不包括b处)的子串
//slice(a, b)的参数a可以是负数
//slice(a, b)中,参数a必须小于参数b
// substring (a, b)和slice(a, b)功能基本一致,都是得到从a开始到b结束(不包括b)的子串,区别:
// substring()可以自动交换两个参数位置,而slice()不行;②slice()的参数a可以是负数,而substring(不行)
// substr(a, b)中参数b是子串长度,而不是位置编号
//toUpperCase()和toLowerCase()
// toUpperCase()转为大写
// toLowerCase()转为小写
// indexOf()
// indexOf()方法返回某个指定的字符串值在字符串中首次出现的位置
// 如果要检索的字符串值没有出现,则该返回-1
//布尔类型 ture 和false
// undefined是什么
// 一个没有被赋值的变量的默认值是undefined,而undefined的类型也是undefined
// 即: undefined又是值,又是一种类型,这种类型只有它自己一个值
// 在变量声明提升时,变量的值也是undefined。
// console.log(a);undefined
// console.log(typeof a); l/undefinedvar a =,10;
// null表示“空”,它是“空对象”
// 当我们需要将对象销毁、数组销毁或者删除事件监听时,通常准它们设置为null。
// 用typeof检测null结果是object
// 使用typeof检测null值,结果是object,这点尤其要注意
// typeof null;// object
// 类型和typeof检测结果并不总是一—对应,比如数组用typeof检测结果也是object
// 其他值→数字 使用Number()函数
// 字符串→数字
// 纯数字字符串能变为数字,不是纯数字的字符串将转为NaN
// 布尔值→数字
// true变为1, false变为0
// undefined和null→数字undefined变为NaN
// null变为0
// 使用parselnt()函数
// parselnt()函数的功能是将字符串转为整数
// parselnt()将自动截掉第一个非数字字符之后的所有字符
// 所有文字都将被截掉
// 如果字符串不是以数字开头,则转为NaN
//parselnt()函数不四舍五入
// 使用parseFloat()函数
// parseFloat()函数的功能是将字符串转为浮点数
// parseFloat()可以将小数字符串转为数字小数
// parseFloat()将自动截掉第一个非数字字符、非小数点之后的所有字符
// 如果字符串并不是以数字开头,则转为NaN
// 不四舍五入
//数字转字符串
// 使用String()函数
// 数字→字符串
// 变为“长得相同”的字符串。科学计数法和非10进制数字会
// 转为10进制的值。
// 布尔值→字符串
// 变为“长得相同”的字符串
// undefined和null→字符串变为“长得相同”的字符串
// 使用toString()方法
// 几乎所有值都有toString()方法,功能是将值转为字符串
// 使用Boolean ()函数
// 数字→布尔值
// 0和NaN转为false,其他数字
// 都转为true
// 布尔值→布尔值
// 空字符串变为false,其他都转
// 为true
// undefined和null→布尔值
// 转为false
// 隐式类型转换
// 如果参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型
// 3 *'4' //12 隐式转换的本质是内部调用Number()函数
// true + true //2
// false + 2 // 2
// 3* '2天' //NaN
// 判断是否相等
// JavaScript中等号=表示赋值,而并不是相等。判断相等应该使用==运算符
// 两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等
// 三个等号===运算符,不仅比较值是否相同,也比较类型是否相同
// 1、null和undefined用==进行比较涉及隐式强制类型转换,ES5规范中规定:
// ①如果x为nully为undefined,则结果为true
// ②如果x为undefined,y为null,则结果为true
// 2、null和undefined用===比较时结果为false是因为类型不同:
// ①typeof null—>object
// ②typeof undefined—>undefined
// NaN不自等
//NaN作为一个特殊的数字类型值,它在用==比较的时候也有特殊的结果
// 如何判断某变量值为NaN
// isNaN()函数可以用来判断变量值是否为NaN
// isNaN(NaN)
// true
// isNaN(5)
// false
// 但isNaN()也不好用,它的机理是:只要该变量传入
// Number()的执行结果是NaN,则isNaN()函数都会得到true
//JS中没有连比
//与运算
//&&表示“并且”,称为“与运算”,口诀:都真才真
// ||表示“或者”,称为“或运算”,口诀:有真就真
// a && b运算中:a真,表达式值为a;a假,表达式值为b
// 逻辑运算顺序
// 逻辑运算的优先级是:非→与→或
//综合运算的运算顺序
// 运算顺序:非运算→数学运算→关系运算→逻辑运算
//三元运算符
// JavaScript中提供了一种叫做“三元运算”的语法形式,让我们可以方便地实现选择
// 条件表达式﹖表达式1:表达式2
</script>
</body>
</html>
JS基础知识
最新推荐文章于 2024-10-02 20:43:10 发布