一、js定义
javascript是一种弱类型、动态类型、解释类型的脚本语言。
弱类型:类型检查不严格,偏向于容忍隐式类型转换。
动态类型:运行的时候执行类型检查。
解释类型:程序不需要编译,程序在运行的时候才翻译成机器语言,每执行一次都要翻译一次,因此效率低,但跨平台性好。
二、js 的组成(js之父:Brendan Eich(布兰登・艾奇))
1、js的组成:ECMAScript + BOM + DOM
ECMAScript(核心):描述了语言的语法和基本对象(ECMA(欧洲计算机制造协会))
BOM(浏览器对象模型(Browser Object Model)):描述了浏览器进行交互的方法和接口。
DOM(文档对象模型( Document Object Model)):描述了处理网页内容的方法和借口。
<script type="text/javascript" src="要引入js文件的路径"></script>
<!-- //(引入样式) -->
<script type="text/javascript">
//内容
</script>
<!-- (内部样式) -->
script标签可以放在页面的任何位置,一般在head 和 body 中
注:(1)当引入文件和内部js同时存在时,内部js不会执行
(2)不可使用<script type="text/javascript" />单标签
三、js 语句
1、js语句就是向浏览器发出命令,告诉浏览器该做什么。
注:不写分号单行(一条)语句也可以执行,因为js是弱类型。
alert(1)
// (可执行)
alert(1)
alert(2)
//(可执行)
alert(1)alert(2)
//(不可执行)
2、js 代码是js 语句的序列,浏览器会按照编写顺序来执行(从上往下,谁在前谁先执行)。
3、{ } 一个花括号就是一个代码块。
注:js 语句严格区分大小写。
四、js 解释
单行注释://
非常重要的注释:/*!、、、、*/
多行注释:/*、、、、*/
文档注释:/**、、、*/
五、js 变量
变量是存储信息的容器,用 var 来声明变量
变量命名规则:
(1)以字母、数字、下划线和 $ 组成
(2)不能以数字开头
(3)不能用拼音
(4)不能用关键字
1、常用命名法
(1)驼峰命名法(Camel)第一个单词的首字母小写,后面的单词的首字母大写。
(2)帕斯卡命名(Pascal)所有单词的首字母大写
(3)匈牙利命名法(Hungarian)在变量名最前面添加相应的小写字母来标识来标识变量的类型,后面单词的首字母大写
2、保留字和关键字不能用来命名(保留字:以后会用的字)
3、数据类型
基本数据类型:String、number、boolean、null、undefined
引用数据类型:object、function
(1)String :必须由成对的单引号或双引号包起来
(2)number:带小数点、不带小数点的都可
(3)boolean:true、false
(4)undefined:声明的变量没有值
(5)null:表示尚未存在的对象
typeof : 用来检测数据类型
六、运算符
1、算术运算符:+ 、- 、* 、/ 、%(取余) 、++(递增) 、--(递减)
注:%(取余):余数的正负和被除数有关,和除数无关
注:"+" 两边若有一个字符串类型的值,则"+" 会被作为连接符,结果是字符串的拼接。
注:a++:后自增,先将结果赋予当前位置,然后再自增(先运算,后自增)
++a:前自增,先自增,然后将自增后的结果赋予当前位置(先自增,后运算)
"-":两边若有一方为字符串,另一方为数值型,则字符串自动转换为数值型,再进行运算。
2、赋值运算符:= 、+= 、-= 、*= 、/= 、%=
a += b;等于a = a+b;(其他同理)
3、关系运算符:> 、< 、>= 、<= 、== 、=== (三等)、!= 、!==
注:== 和 === 的区别
对于string 和 number 等基本类型
“==”两边若有字符串类型,可自动转换为数值型再进行比较
“===”不可自动转换两边类型,因类型不同,结果为false。
注:两个引用数据类型判断是否相等
var a={}, b={};
console.log(a==b);
结果为false
a和 b 的外形一样 ,但是他们的内在不同。不是同一个对象。
4、逻辑运算符:&& 、|| 、!
5、三目运算符:表达式1 ?表达式2 :表达式3;
若表达式1为真(true),则执行表达式2
若表达式1为假(false),则执行表达式3
Math.round()四舍五入(针对整数)
parseInt:将字符串转换成整数(从字符串左侧一次查找数值,直到碰到非数值的字符结束)
parseFloat:将字符串转换成浮点数
七、运算符优先级
(1)[] 、. 、() :字段访问数组下标、函数调用、以及表达式分组
(2)++ 、-- 、!、delete、new、typeof
(3)* 、/ 、%
(4)+ 、 -:加、减、字符串拼接
(5)关系运算符、instanceof(判断某个对象是否是某个类的实例)
(6)逻辑运算符
(7)赋值运算符
“()”的作用:可以对表达式进行分组,改变运算符的优先级
函数调用,“new”运算符,用来创建对象。
a =!6<7;//true
//解析:
//a=(!6)<7;
//a = false < 7;
//a = 0 < 7;
//true;
八、强制转换
强制转换只要指:Number 、 String 、Boolean三个构造函数,手动将各种类型的值,转换成数字,字符串或布尔值。
1、Number 强制转换
(1)参数为原始类型值的转换规则
原始类型的值只要是字符串、布尔值、undefined 和 null,他们都能被Number 转换成数值或NaN(not a number)
isNaN:判断变量是否为数值型
Number(324); //324
Number('324'); //324
Number('123abc');//123abc
Number("");//0
Number(true);//1
Number(false);//0
Number(undefined);//NaN
Number(null);//0
(2)参数为对象的转换规则
Number方法的参数是对象时,将返回NaN
Number({a:1});//NaN
注:如果对象值为函数则称为方法
var obj = {
valueof:function(){
return {};
},
toString:function(){
return{};
}
};//转换步骤
2、string 强制转换
(1)参数为原始类型值的转换规则
数值:转换成相应的字符串
字符串:原来的值
布尔:“true”“false”
undefined:“undefined”
null:“null”
(2)参数为对象的转换规则
若参数为对象,返回一个类型字符串,若为数组,返回数组的字符串形式
转换步骤和Number相反
九、自动转换(隐式转换)
浏览器将一个数据类型转换为另外一个数据类型
1、自动转换为布尔值
//if(条件语句){}条件语句被转为boolean
2、自动转为字符串
alert(5+"1");//5被转成'5',和1进行字符串拼接,结果为51
alert(null+"2");//null2
alert({}+"6");//[object Object]6
3、自动转换为数值
alert(5-"1");// 4
alert(null-2);// -2
alert(undefined-2);//NaN
十、进制
1、各种进制之间的转换
(A)toString(B)//将A进制的数转换为B进制
2、各进制转10进制
parseInt(A,B);
//A为要转换的各进制数
//B为进制数(2,16,8)
十一、代码规范
1、代码缩进
2、+ 、= 等运算符两边空格
3、以分号结尾
4、小括号的嵌套要加空格
5、双引号、单引号的嵌套