创建变量 储存信息
let age=27; age=31; console.log(age);
//JS 注释
const ponts=50; //常量不能进行赋值
let myAge ;
变量必须以字母 $ _开头 尽量语义化 多单词以小驼峰约定
数据类型
变量的作用就是存储数据
数字 Number 1,2,500
字符串 String "h"
布尔Boolean true/false
Null 没有值的变量
未定义Undefined 尚未定义的变量
对象Object 数组日期,对象字面量,函数等 引用数据类型
Symbol ES6引入的原始数据类型,表示独一无二的值,常用于对象
String
//字符串
console.log('HELLO');
let email='1@qq.com';
console.log(email);
//字符串;连接
let firstName='Summer';
let lastName='Peng';
let fullNmae=firstName+ ' ' +lastName; //加空格
console.log(fullNmae)
//获取字符
console.log(fullNmae[3]); //下标计算从0开始
//获取字符串长度
console.log(fullNmae.length); //添加了空格字符串 长度为11
//字符串方法
//大小写转化
console.log(fullNmae.toUpperCase()); //toUpperCase大写
console.log(fullNmae.toLowerCase()); //toLowerCase小写
let index=email.indexOf('@'); //返回字符的下标 为 -1 为不存在
console.log(index);
//字符串常见方法
let password='Ms123456M';
let results=password.lastIndexOf('5'); // 字符最后一次出现的位置
console.log(results)
let results1=password.slice(0,3) ; //截取 包含起始下标 不包含终止下标
console.log(results1)
let results2=password.substr(2,5); //第一个参数 是从第二个开始,5代表长度
console.log(results2)
let results3=password.replace('M','m') ;//第一个为查找 第二个为替换 只会处理第一个匹配的字符
console.log(results3)
数字
//数字
let radius=10;
const pi=3.14;
console.log(radius,pi)
//数学运算符 + - * / ** %
console.log(radius / 5);
let result= radius %3; //余数
let result1=pi*radius**2; // 求幂 300
console.log(result1);
//运算顺序 法则 B(括号) I(次方) D(除法) M(乘法) A(加法) S(减法)
let result2=3*(10-5) **2; //75
console.log(result2)
// 速写方法 ++ -- +=....
let likes=5;
// likes=likes+1
likes++;
likes--;
likes +=10; //加10
likes -=10; //减10
likes /=2; //除以2
likes *=2;//乘以2
//NAN Not a Number
console.log(10/'summer'); //NAN
//数字的 拼接
let result3= '文章当中出现了'+likes+'个likes';
console.log(result3)
模板字符串
//模板字符串
const title='JS的前世';
const names='zt';
const likes=100;
//+进行串联
let result=names+'写的'+title+'获得了'+ likes + ' 个毛';
console.log(result);
//模板字符串
let result1 =`${names}写的${title}获得了${likes}个毛`;
console.log(result1)
//创建html模板
let html=`
<h2>${title}</h2>
<p>${names}</p>
<span>获得了${likes}个毛</span>
`;
console.log(html)
数组
//数组
let users=['summer','lucy','henry'];
console.log(users);
//获取字符
console.log(users[1]);
let age=[25,28,32];
console.log(age[0]);
//属性和方法
console.log(users.length);//打印长度
let result=users.join(',');
console.log(result) //summer,lucy,henry
let result1=users.indexOf('lucy') ;// 找出字符存在下标1 不存在返回-1
// 数组串联
let result2=users.concat(['John','LiLy'])//['summer', 'lucy', 'henry', 'John', 'LiLy']
// push 对数组进行尾部的添加 //pop对尾部的删除
let result3=users.push('John') ; //返回的是数组的新长度 4 push会破坏原始值
let result4=users.pop(); //返回的是删除对象的值 John
null 和 undefined
let age;
//undefined 表示值的缺失 定义了 没给分配值
let age1=null; //进行赋值 空值 常用于清空
console.log(age,age+5, `我的年龄是${age}`); //undefined NaN '我的年龄是undefined'
console.log(age1,age1+5, `我的年龄是${age1}`); //null 5 '我的年龄是null'
布尔值 比较运算符
//布尔值
console.log(true,false,'true','false');
//某些方法返回布尔值
let email='106767@qq.com';
//includes includes() 方法用于判断字符串是否包含指定的子字符串 如果找到匹配的字符串则返回 true,否则返回 false。
let result=email.includes('@'); //true
let names=['Summer','Lucy','Henry'];
console.log(result);
//比较运算符
let age=30;
console.log(age == 30); //双等号 比较 单等号赋值
console.log(age != 30);
console.log(age > 30);
console.log(age <= 30);
let user ='summer';
console.log(user== 'summer');
console.log(user >'crystal'); //true 第一个字母比较 S排在C后面
console.log(user >'Crystal'); //大写字母代码 都小于 写小写字母
console.log("2">"12") ;// true 当比较2个字符串时 按照字母排序 1<2
console.log("2">"zt") ;// zt保持为false的NAN
== === 松散比较 严格比较
let age =20;
//松散比较(不考虑类型,只考虑值是否相等)
console.log(age ==20); //true
console.log(age == '20'); //true
console.log(age !=20);//false
console.log(age !='20');//false
//严格比较*(类型和值都要考虑)
console.log(age=== 20); //true
console.log(age==='20'); //false
console.log(age !==20); //false
console.log(age !=='20');//true
类型转换
//类型转换
let score='59';
//显示转换
console.log(score+1);//591
console.log(score-1);//58 如果两个数字型的字符串相减,或者其中一个为字符串时 自动转换为数字类型的进行运算
console.log(1-score);//-58
score=Number(score);
console.log(score+1,typeof score);//60 'number'
let result=Number('Hello');
let result1=String(50);
console.log(result);//NAN
console.log(result1,typeof result1); //50 string
//Number类型进行布尔值转换的类型中 除了0 都是 true
let result2 =Boolean(0);
console.log(result2,typeof result2) //false 'boolean'
//字符串转换成布尔值的时候 只要这个字符串 有长度 都为true
let result3 =Boolean('0');
console.log(result3)
let result4 =Boolean('');
console.log(result4)
//隐式转换 隐式转换就是自动转换
类型转换 分为显示转换和 隐式转换
JavaScript 中,表达式中包含以下运算符时,会发生隐式类型转换:
算术运算符:加(+)、减(-)、乘(*)、除(/)、取模(%);
逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);
字符串运算符:+、+=。
隐式转换规律:
'string + number’字符串加数字,数字会转换为字符串;
‘number - string’ 数字减字符串,字符串会转换为数字,如果字符串无法转换为数字(例如"abc"、“JavaScript”),则会转换为 NaN;
'string - number’字符串减数字,字符串会转换为数字,如果字符串无法转换为数字,则会转换为 NaN;即’优先向数字转换。
乘、除运算时,也会先将字符串转换为数字。
当字符串和数字同时存在时,除了加号运算符转化为字符串,其他减、乘和除都优先转化为数字。