JS基础
笔记整理
【专业术语】
1.语句:JS中用分号来结束一条语句
例子 :var i = 1 ;
关键字 标识符 赋值符 变量 ;
关键字:声明/创建
标识符:变量、函数、数组、对象、集合…
创建变量的方式
ECMA Script 定义JS的规则
两大类 ES5 ES6
var 声明的变量,可以重复
let和const 不可以重复声明
如果重复声明 会报错
let 和const的区别 【数据类型进行内容添加】
let是声明变量
const是声明常量
注:如果是——引用数据类型,存储的是地址。
因此,地址里的数据可以发生变化。
【报错】
1.重复声明
2.const 声明 未 赋值 然后再赋值
3.使用未声明过的标识符
*/
// const F = 200;
// F = 500;
// let F = 300;
// console.log(F);
/*
【标识符的命名规范】
1.硬性要求
①可以是数字、字母、下划线、$符号(不允许其他特殊符号)
②不能数字开头
③不能使用关键字和保留字
④区分大小写
2.软性要求:见名知意
*/
/*
【标识符的书写形式】
1.大驼峰命名法:单词首字母大写
2.小驼峰命名法:除了第一个单词,其他首字母大写(推荐)
3.蛇形命名法:每个单词之间加个下划线_
4.匈牙利命名法:数据类型_数据变量名
let S_account;
let N_balance;
*/
/*
【数据类型】
1.基本数据类型
string:字符型
number:数值型
Boolean:布尔型 (true真、false假)
null:取值null
undefined:取值undefined(变量声明未赋值)
symbol:(讲对象时,补充)
2.引用数据类型
object
*/
// let act = “z3”;
// console.log(typeof act);//string
// let pswd = 123;
// typeof 变量:查看变量类型
// console.log(typeof pswd);//number
// let balance = 100;
// console.log(typeof balance);//number
// 【作用域】变量的使用范围
// 1.全局作用域
// 创建的变量时全局变量,能够在全局使用
// 2.局部作用域
// 创建的变量时局部变量,只能在声明的局部作用域和它嵌套的作用域里使用
// 注:
// 1.大括号外就是全局作用域,里面就是局部作用域,里面的里面就是局部作用域的嵌套作用域
// 2.局部作用域中(除函数),var声明的变量会自动提升为全局变量
// 【扩展】暂时性死区 (先使用后声明)
// console.log(xiaoliu);
// let xiaoliu = 123;
// var变量会自动去第一行 var变量会自动提升
// 【扩展】js弱类型语言
// 变量的类型取决于赋值的类型
数据类型
// 【String的类型】
// 1.单引号’’
// 2.双引号""
// 3.字符串模板``(推荐)
// 适用场景:输出的文本内容(字符串模板可以引用变量的值)
// let t1 = ‘abc’
// console.log(t1+“欢迎来到银行”);
// let t2 = “def”
// let t3 = ghi
// console.log(${t3} wellcom to bank'嗨'"尼玛"
);
/*
【undefined】
取值:undefined
注:
1.标识符声明未赋值
2.typeof 看未声明标识符
*/
/*
【null】 空
取值:null
let xiaoming = null;
console.log(typeof xiaoming);//object 它是空对象
*/
/*
【Boolean】
取值:true 、 false
适用场景:判断条件、状态值
*/
/*
【Number】
取值:整型、浮点型(小数)、NaN(非数字)
注:
1.NaN: is not a number;不是数字,但是数值型
2.NaN和任何值比较都不相等(包括自己);
判断变量的值是不是非数字:isNaN(变量名)
返回true(非数字)或false(纯数字)
适用场景:当需要进行运算时
判断用户的输入、判断变量
let x = 1;
console.log(x);
x = “abc”
console.log(x-1);//NaN
console.log(NaN == NaN); //false
补充:
[parseInt:取整]
格式:parseInt(变量名)
取第一个非数字之前的数字
若第一个就是非数字返回NaN
let str = “100.1”;
let num = parseInt(str);//取整
console.log(num);//100
str = “1asjd2234”
let num = parseInt(str);//取整
console.log(num);//1
str = “aasjd2234”
let num = parseInt(str);//取整
console.log(num);//NaN
判断用户输入是否纯数字
let num = “123a”;
console.log(parseInt(num) == num);
isNaN(!‘sdfasdf’){
}
[parseFloat:获取浮点数]
格式:parseFloat(变量名)
获取第一个小数点后非数字前的浮点数
小数点前纯数字
[保留小数位:toFiexd (默认四舍五入)]
书写格式:变量名.toFixed(保留的小数位)
注:变量类型须为Number
报错:若变量类型不是Number则报错
变量名.toFixed is not a function
[变量名.toString]转换为字符类型
适用于Number和Boolean
null 和 undefined 会报错
Cannot read property ‘toString’ of null(undefined)
不能读取null或undefined的toString方法
*/
// --------------------
// 只保留整数: parseInt(3.1415926); // 3
// 向下取整: Math.floor(3.1415926); // 3 就是取整数
// 向上取整: Math.ceil(3.1415926); // 4 只要有小数 整数就+1
// 四舍五入: Math.round(3.1415926); // 3
// 取绝对值: Math.abs(-8); // 8
// 返回两数中的大者: Math.max(3,5); // 5
// 返回两数中的x小者: Math.min(3,5); // 3
// 随机数: Math.random();
// -----------------------------
/*
【数据类型转换】
1.强制转换(手动)
书写格式:
数据类型(标识符)
例如:Number(变量名); // 转换数值类型
2.隐式转换(自动)
算数运算符 会把运算符左右的变量 转换为数值类
注:加号左右存在字符串类型,则进行拼接
let str = “a123”
let num = str * 10
console.log(typeof num, num);//NaN
if(“abc”){
console.log(“f”);
}
*/
/*
判断条件转换成Boolean
false:
-0
空字符串 ‘’ “” ``
null
undefined
false
NaN
注:其他都会转换成true
*/
/*
【运算符】
1[赋值运算符:=]
标识符 = 值或表达式或标识符;
把值或表达式赋予标识符
2.[一元运算符]
[++]自增 [–]自减
运算符在前 先赋值,再使用
-----在后 先使用 再赋值
// let num = 10;
// console.log(num++);
// console.log(num);
// console.log(++num);
[+=] [-=] [*=] [/=] [%=]
3.[判断运算符]
4.[逻辑运算符] Boolean类型
! 逻辑非 取反
短路运算符 && ||
&& 逻辑与 一假全假
工作原理:A && B && C && D
打假-A为T 返回 B ;A为F 返回A 一旦找到 就不管后面的
|| 逻辑或 一真全真
工作原理:A && B
判断A是T 返回A ;为F 返回B 找寻真理
*/
/*
快速转布尔和字符串
let F72 = 0;
console.log(F72 - 0); //Number
console.log(F72 + ‘’); //String
console.log(!!F72); //Boolean
*/
// if (0 && 2) {
// console.log(“f”);
// }
// let year;
// (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
/*
5.[位运算符]
& 与
| 或
十进制转二进制通过计算,再转为十进制console
*/
/*
[三目运算符] ?
格式:
条件 ? 表达式1 ;: 表达式2;
功能:条件为T ,执行表达式1
条件为F ,执行表达式2
*/
// 接受用户输入的3个值 请输出最大值或最小值
// let iN1 = 0, iN2 = 2, iN3 = 0;
// let max =
// (iN1 > iN2 ? iN1 : iN2) > iN3 ? (iN1 > iN2 ? iN1 : iN2) : iN3;
// // max = (iN1 > iN2 && iN2 > iN3) ? iN1 : (iN2 > iN3 ? iN2 : iN3)
// console.log(max, min);
// 【获取用户的输入】
// const rs = require(“readline-sync”);
// console.log(请输入您的账号:
);
// let inputStr = rs.question();
// console.log(你输入的账号:${inputStr}
);
// [扩展]
// 非纯数字是可以比较的
// 工作原理:按位比较,相等的话比较第二位
// 比较的是非数字ASCII码
// let a = “2a”;
// let b = ‘1b’;
// console.log(a > b);
// let x= “124723.4afad9”
// console.log(parseFloat(x));
// let F72 = 1;
// console.log(!F72); //Boolean