js基本语法
/**/js注释多行注释 ,注释内容不会被查看
//单行注释
养成良好的注释习惯
可以利用注释对代码进行调试
js中严格区分大小写,html并不区分
js中每条语句都以分号结尾,js中不识别换行与空格
字面量与变量
字面量:是不可改变的量,一般不会直接使用
变量:可以用来保存字面量,而且变量的值可以随意改变,更方便使用
声明变量
var a; 使用var可以声明变量,并且为变量赋值
通过变量对字面量进行提示
var a;
a =123;//声明一个变量用变量保存字面量
标识符
所有在js自主命名的都叫标识符
例如:变量名,函数名,属性名都属于标识符
命名标识符的规则:
1可以含有字母数字"-"$
2不能以数字开头,不能以关键字保留字进行命名
js中的关键字保留字
一般采用驼峰命名法 例halloWorld
js低层保存标识符采用unicode 编码 utf-8
break | do | instanceof | typeof | case |
else | new | var | catch | finally |
return | void | continue | for | switch |
while | default | if | throw | delete |
in | try | function | this | with |
debugger | false | ture | null |
class | enum | super | cost | export | extends |
import | implements | let | private | public | yield |
interface | package | protected | static |
数据类型
6种类型
字符串 String 数值Number 布尔Boonlean 空值Null 未定义Unfined :基本数据类型
对象Object:引用数据类型
String字符串
var str = "hello";//字符串要用引号引起来
console.log("hello")//单双引号都行''不要混着用
alert("str");//输出字面量str
alert(str);//输出变量str
引号不能嵌套:但是能在单引号嵌套双引号
也能使用斜杠进行转义\"表示 " \n表示换行 \t表示制表符按一下tab键 \'表示' \\表示\
str = '我说:"今天天气很不错"';//引号嵌套
str = "我说:\"今天天气很不错\"";//转义告诉计算机这个引号不用特殊理解
Number数值
js整数运算基本保持正确,不要进行精确度高的运算例如浮点数运算
var c=123+456;//.结果是579
js Number.MAX_VALUE最大值
js Number.MIN_VALUE最小值大于0 的最小值5e-324
数值超过最大值就是返回一个infinity(正无穷)-infinity(负无穷)
nan是一个特殊的数字,表示不是一个数字
在js中所有数值都是number类型包括整数,小数,浮点数
var a = 123;//number类型
var b= "123";//string类型
/*因为在控制台两个输出结果一样可以使用typeof来检查一个变量的数据类型
语法:typeof 变量
*/
console.log(typeof a);//输出number
console.log(typeof b);//输出string
布尔值boonlean
false true 逻辑上的真 假
Null(空)
只有一个值null,专门表示空对象 用typeof检测返回object
Underfind类型(未定义)
只有一个值undenfind,当声明一个变量并不给他赋值值时这个变量的类型就是undenfined
强制类型转换
一个数据类型强制转换成其他数据类型,转换成string number boolean,因为转换成null 跟undenfined无意义.
转换string
方式一:调用被转换toString()方法,调用xxxtoString方法,不会影响原变量,会将转换的结果返回
var a = 123;
var b = a.toString();//这个结果赋值给b
null 跟undenfined没有toString方法,如果调用会报错.
方法二:调用string()函数,并将转换的数据作为参数传递给函数
var a = 123;
a=string(a);//string()函数作为强制类型转换可以让null 跟undenfined进行转换
//可以将null直接转换字符串"null", undenfined转换成字符串"undenfined"
将其他转换Number数据类型
方法一:调用number()函数
var a = "123";
a = number(a);//纯数字转换成数字 有非法数字转换成NAN,空格,或者空串转换成0
a = true
number(a)//转换成1
a =false
number(a)//转换成0
a =null
number(a)//转换成0
a =undefined
number(a)//转换成NAN
方法二:
针对字符串
parseInt()把字符串转换成整数
parseFloat()把字符串转换成浮点数
var a = "123px";
a = number(a);//结果输出NAN
a = parseInt(a)//输出结果123
//parseInt()可以将字符串中整数截取出来然后转换成number,只会取整数
var a = "123.456px";
a = number(a);//结果输出NAN
a = parseInt(a)//输出结果123
a = parseFloat(a)//输出123.456,他可以获得有效的小数位
/*
对于非string parseInt() parseFloat() ,会将其先转换成string再操作
*/
其他进制数字(了解)
0x开头:十六进制
0开头:八进制
0b开头:二进制(有的浏览器不支持)
像"070"这类数据有的浏览器当作八进制有些当作十进制为了解决这个问题再parseInt传入一个参数指定进制 a= parseInt(a, 10);指定了十进制
将其他转换boolean数据类型
只有一种方式使用Boolean函数
var a = 123;//Infinity无穷大也是true
a = Boolean(a);//true
var a = 0;
a = Boolean(a);//false
//数字转Boolean除了0和NAN其余都是true
var a = "hello";
a = Boolean(a);//true
var a = "";
a = Boolean(a);//false
//字符转Boolean除了空串其余都是true
var a = null;
a = Boolean(a);//false
var a = undefined;
a = Boolean(a);//false
//对象也会转换为true
运算符(操作符)
可以对一个或多个值进行运算,并获取运算结果
var result = typeof a;
console.log(typeof result );//结果是String typeof返回值是字符串
算数运算符
对非number的类型的值进行运算时会将这些值转换为number再进行运算
任何值和NAN做运算结果都是NAN
+:对两个值相加并返回
特殊情况:如果对两个字符串进行加法运算则会做成拼串,会将两个字符串拼成一个并返回,
利用+号进行拼串,任何值和字符串做加法运算,都将他转换成字符串,然后再拼串
c=c+"";等价
c= String(c);
-对两个值进行减法运算并返回
a= 100-"1";//结果是99,只有加法转换成字符串其余都是转换成数字进行相加
*对两个值进行乘法运算并返回
relsurt = 2*"8";//结果16
result =2 * undefined;//结果为NAN
//undefined转换number为NAN 任何数跟NAN 运算都是NAN
result =2 *null;//结果为0
/对两个值进行除法运算并返回
任何值做- * / 运算时都会自动转换number,可以利用这一特点进行隐试类型转换原理和number()函数一样,这个值-0 *1/1, 转换成number类型使用起来更加简单
var d = "123";
d= d-0;//结果为123
d= d-1;//结果为122
%取模(取余数)
result= 9%3;//结果为0
result= 9%5;//结果为4
result= 9%6;//结果为3
一元运算符
只需要一个值
+ 正号不会对数字产生影响
- 负号可以对于数字进行负号的取反
对于非number先转换成number类
型再进行运算,可以对其他数据类型使用+进行任意值转换成number类型
自增和自减
++自身基础上加1
a++ 先用再加(原变量的值自增前的值)
++a 先加再用(自增后的值)
一个变量自增以后对于原变量的值会立即加1
var d = 20;
var result = d++ + ++d + d
// 20 22 22
//因为d自增两次d为22
//d++是自增前的值为20
//++d 是一次自增后再自增的值所以为22
--自身基础上减1
a-- 先用再减(原变量的值自减前的值)
--a 先减再用(自减后的值)
一个变量自减以后对于原变量的值会立即减1
逻辑运算符
! 非
非运算就是对一个布尔值进行取反操作true变false,false变true
var a = true;
a= !a;//a就变为false
两次取反不会变化
如果对非布尔值进行运算则会将其先转换成布尔 值再进行运算
对任意值取两次反可以将其转换成布尔型原理与Boolean()函数一样
var a = 10;
a = !!a;等价于a =Boolean(a);
&& 与 可以对符号两侧的值进行运算并返回结果
真真为真,真假为假 假假为假,只要有一个值为false就返回false
爱情只要有一个不是真心的就不是真爱
就近原则 短路的 只要找到一个false就返回false不会检查第二个值
|| 或 可以对符号两侧的值进行运算并返回结果
假假为假,真假为真 真真为真,只要有一个true就返回true
就近原则 短路的 只要找到一个true就返回true不会检查第二个值
&& ||非布尔值的情况
对于非布尔值进行或与运算时,会将其转换成布尔值再进行运算并且会返回原值
&&两个值都为true返回后面那个值
两个值如果有false则返回前面那个值
&&见到false就返回
|| 如果 第一个值ture 直接返回第一个值,
如果第一个值false返回第二个值
赋值运算符
= 将右侧值赋值给左侧运算符
+= a+=5 等价于a=a+5
-= a-=5 等价于a=a-5
*= a*=5 等价于a=a*5
/= a%=5 等价于a=a/5
%= a%=5 等价于a=a%5
关系运算符
比较两个值之间的关系,关系成立返回true,关系不成立返回 false
任何值和NAN比较都是false
如果比较符号两边都是字符串,不会将其转换成数字进行比较而是会分别比较字符串中的Unicode编码
//比较两个字符串的编码
console.log("a"<"b");//"a"0061 "b" 0062//返回 true
比较字符编码时,是一位一位进行比较,如果两个一样则比较下一位
如果比较两个字符串数字时,结果不可预期
>
<
Unicode编码
console.log(\u1C00);
//在字符串中使用转义符号输出unicode编码\u
在网页中使用unicode编码
&#编码;这里需要10进制
<h1 style = "fonr-size:200px;">☨</h1>
//输出一个骷髅头
相等运算符
==
用来比较两个值是否相等,相等返回true 不相等返回false
比较的值类型不同则会进行类型转换转换成相同的类型再进行比较
大部分情况转换成数字进行比较
undenfined衍生nll 所以作比较时结果为true
NAN不和任何值相等包括他本身可以通过isNAN()函数来判断一个值是否与NAN相等
var b = NAN;
isNaN (b);/检查b是否是NaN,是的话返回true,不是返回false
!=不相等
不相等返回true 相等返回false
比较的值类型不同则会进行类型转换转换成相同的类型再进行比较
大部分情况转换成数字进行比较
===全等
用来判断两个值是否全等
比较的值类型不同则不会进行类型转,类型不同直接返回false
!==不全等
比较的值类型不同则不会进行类型转,类型不同直接返回true