JavaScript基础知识1
1.基础语句
必须书写在script
标签中,执行严格按照从上往下的顺序
输出语句:
alert(“”);
–向浏览器发出一个警告
document.write(“”);
–向body中输出一个内容
console.log(“”);
–向控制台输出一个内容
<button>
按钮
<script>
alert("bibibibi警告!");
document.write("看我出不出来");
console.log("猜猜我在哪")
</script>
2.编写格式
可以将JS代码编写到JS文件中,通过script引入,但是script一旦用于引用外部文件就不可以再书写别的语句,可以重新编写一个script标签书写
<script src="./外部文件.js"></script>
可以将JS代码编写到标签onclick
属性中
<button onclick="alert('点我干嘛')">点我一下</button>
<!-- 只有当点击按钮后,onclick中的JS代码才会执行 -->
可以将JS代码写在超链接的herf属性中,当点击超链接时,会执行JS代码
<a href="javascript:alert('别点');">你也点我一下</a>
3.基本语法
1.JS中严格区分大小写
2.JS中每一条语句以分号结尾
(如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,而且可能填错分号)
3.JS中会忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式化
4.字面量和变量
字面量:都是一些不可改变的值,可以直接使用,但是一般不会直接使用
<script>
alert(12531515);
</script>
变量:可以用来保存字面量,而变量的值可以任意改变
声明变量:在JS中使用var关键字来声明一个变量
变量赋值:a=123;
var a=123;
5.标志符
在JS中所有可以自主命名的都可以成为标志符
例如变量名、函数名、属性名等
规则:
1.标志符可以含有字母、数字
2.不能以数字开头
3.不能用关键字和保留字
4.一般采用驼峰式命名HelloWord
、xxxYyyZzz
JS底层保存标识符时实际上是采用Unicode编码
6.数据类型
使用typeof检查变量类型 — 语法: typeof 变量
<script>
// 检查字符串会返回string,检查数值会返回number
var a=123
var b="123"
console.log(typeof a);
console.log(typeof b);
</script>
// 在JS中使用字符串要用引号引起来,单双都可以,但不能混着用
document.write("'hello'")
还有转义字符串’\n’,'\t’等
在JS中所有数值都是Number类型,包括整数和浮点型(小数)
var a=123;
var a=123.456;
在JS中可以表示的数字最大值 Number.MAX_VALUE
console.log(Number.MAX_VALUE)
如果使用Number表示的数字过大,会返回+/-Infinity(无穷)也属于number
// Infinity自变量不加“”
a=Infinity;
//返回NaN是一个特殊数字,表示Not A Number,NaN也属于number,不加“”
a=NaN;
如果使用JS进行浮点运算,可能得到一个不精确的结果,不能使用在对精确度要求很高的情况下
Boolean布尔值只有两个,主要用来做逻辑判断
使用typeof检查Boolean,会返回bool
ture–真
false–假
var bool=true;
Null专门用来表示对空的对象
使用typeof检查Null,会返回object
var a=null;
值只有一个,就undefined
当声明变量但不赋值时,他的值就是undefined
7.强制转换类型
方式1:调用被转换数据类型toString()方法,该方法不会影响到原变量,他会将转换结果返回
但是undefined和null没有toString
// 调用a的toString方法
a.toString();
a=a.toString();
var b=a.toString();
// 调用xx的yy()方法,就写为xx.yy()
方法2.调用String函数
对于number和Boolean实际上就是调用toSting()
但是对于null和undefined会将null转换为"null",将number转换为"number"
a=String(a);
调用Number()函数
–字符串–>数字
1.如果是纯数字字符串,直接转数字
2.字符串有非数字内容,转为NaN
3.字符串是一个空串或者是全是空格的字符,转为0
var a="123";
a=Number(a);
–布尔值–>数字
true转为1
false转为0
null转为0
undefined转为NaN
a=true;
a=false;
a=Number(a);
a=null;
a=Number(a);
a=undefined;
a=Number(a);
–调用parseInt()函数可以将一个字符串中有效整数内容取出,然后转换为number
a="12345a6789px";
a=parseInt(a);
// 返回值为12345
–调用parseFloat()函数可以将字符串中有效小数取出,转换为number
a="123.456.789px564;"
a=parseFloat(a);
//返回值为123.456
如果对非字符串型使用parseInt和parseFloat,会先将其转换为字符串
使用Boolean()函数
–数字–>布尔
除了0和NaN为false,其他都是true
var a=123;//true
a=-123;//true
a=0;//false
a=NaN;//false
a=Boolean(a);
–字符串–>布尔
除了空格其余都是true
8.其他进制转换
16进制–0x
8进制–0
2进制–0b(不是所有浏览器都支持)
a=0x10;
a=0xff;
a=0xCafe;
a=070;
a=0b7;
可以写为(转换对象,要转换的进制)
//表示转换的对象为a,转换的进制为十进制
a=parseInt(a,10)
9.运算符
typeof是运算符,可以获得一个值的类型,他会将该值的类型以字符串的形式返回
+、-、*、/、%
<script>
var a=123;
var result=typeof a;
console.log(typeof result);
//a+1;不起作用,+不会改变原来的值
a=a+1;
result=a+1;
console.log(result);
</script>
字符串相加会形成拼凑,而不是计算
result="123"+"456";
// 返回123456
resul="你好"+"世界";
// 返回你好世界
任何值和字符串相加都会先将值转换为字符串,再进行拼凑
result a="1"+123;
// 返回1123
当非number类型进行加法运算,会先将值转换为number类型
// 利用此可以将值加上空字符转换为字符串
var c=123;
c=c+"";
// 输出"123"
只有加法会将值转换为字符串,其余都是将字符串转换为number进行运算
result a=100-"1";
// 返回99
// 利用此可以做隐式转换,通过-0,*1,/1将其转换为number
var a="123";
a=a-0;
a=a*1;
a=a/1;
// 返回number型123
任何值和NaN做运算都的NaN
+正号
对数字不会有影响
-负号
对数字取反
对于非number值可以将其先转换为number再运算
隐式运算
var a=123;
a=+a;
//输出a为"123"
a++后加加
++a前加加
a–后减减
–a前减减
//后加加等于原值,前加加等于新值
var a=10;
a1=a++;
a2=a--;
console.log("a1"); // 返回值为10
console.log("a2"); // 返回值为11
逻辑非!
对一个值进行取反
两次取反,值不变
对于非布尔值取反会转换为布尔值,对同一个元素两次取反就可以转换为布尔值
逻辑或||
两值中任意一个是真的就可以为真
逻辑与&&
两个值都是真结果真
一方为假全为假
逻辑短路:第一个值为false不再看二式
=
+=
-=
/=
%=
a+=5;
// a=a+5
大/小于号>,<
判断关系是否成立,成立返回true,不成立返回false
大于等于>=,小于等于<=
非数值情况
如果一侧是数字,另一侧不是,则先转换为数值再做比较
result = 1>ture;//返回false
result = 1>"0";//返回true
任何值和NaN做比较结果都为false
result = 10<"hello";//返回false
比较两个字符串时候,比较的是字符串的字符编码,不会转换为数值
result = "11"<"5";//返回true
比较字符编码时候是一位一位进行比较
如果两位一样则比较下一位
result = "a"<"b";//返回ture
result = "abc"<"b";//返回true
// a和b比较为真则不用在看bc
result = "bbc"<"b";//返回false
// b和b比较等价,bbc中还有bc,b中没有数字则返回false
==
var a=5;
console.log("a==4");//false
console.log("1==1");//true
类型不同时会主动转换为相同的再比较
console.log("'1'==4");//false
// undefined衍生自null,相等会返回true
console.log(undefined==null);//true
//NaN不和任何值相等包括它本身
console.log(NaN==NaN)//false
// 可以通过isNaN()函数来判断一个值是否为NaN,如果该值是NaN返回true,否则返回false
console.log(isNaN(b));
!=
不想等也会对变量自动转换,如果转换后相等他也会返回true
===全等
用来判断两个值是否全等,但是不会自动转换类型,类型不同直接返回false
console.log("123"===123);//false
console.log(null===undefined);//false
!==不全等
用来判断两个值是否不全等,但是不会自动转换类型,类型不同直接返回true
console.log("123"!=123);//true
条件表达式 ?语句1:语句2
true?alert("语句一"):alert("语句二");
// 返回语句一
true?alert("语句一"):alert("语句二");
// 返回语句二
// 获取最大值
var max=a>b?a:b;
// 获取三个值中最大值
max=max>c?max:c;
如果条件的表达式求值结果为非布尔值会将其转换为布尔值然后再运算
"hello"?alert("语句一"):alert("语句二");//返回语句一
""?alert("语句一"):alert("语句二");//返回语句二
10.Unicode编码表
在JS中编写
console.log("\u2620");
在body中编写
//转换为十进制
<h1>☠</h1>