查看js语法错误:
1.火狐 firebug
2. 谷歌 chome控制台
script标签
- type = 'text/javascript’说明当前script标签中文本的类型
- 所有的js代码都必须卸载scri标签里
- 为了语法规范,script标签写在head标签中
- 可以引入多个script标签,多个script标签之间,顺序执行
- js代码可以外部引入 src引入外部文件
- 如果当前的script标签作用引入外部文件,则该标签内就不能再写代码了
- //单行注释 快捷键 ctrl+/
- /**/多行注释 快捷键 ctrl+shift+/
alert("hello world");//在页面上弹出警告框
//注:每一条js语句后面都必须加分号,语法规范
document.write("hello world");//在当前文本上输入内容
document.write("</script>");//输出</script>
变量详解
- 常量/字面量 确定的值
- js数据类型分为两大类:
基本数据类型:
数字 number 100
字符串 string 所有带双引号/单引号(两者表达含义相等)
布尔值 boolean true false
特殊数据类型 null(空) undefined(未声明)
复合数据类型: - 变量,值可以改变
声明变量——通过关键字(系统定义的有特殊功能的单词)var - 标识符:用户自定义的所有名字叫做标识符。变量名
规律:
标识符必须由数字、字母、下划线和美元符号$组成
不能以数字开头
区分大小写,age和Age是两个变量
标识符必须见名思意
js是弱语言,变量被赋值成什么类型就是什么类型,不要再后续的代码里改变该变量的数据类型,否则很容易引起代码歧义
var age = 18;//声明变量的同时给变量赋值叫初始化
age = 20;//变量赋值
var name="baby",age="18",sex="female";//可以同时声明多个变量,变量之间要使用逗号隔开
alert(typeof name);//当前变量/常量的数据类型
自动数据类型转换
算数运算符、关系运算符、逻辑运算符、赋值运算符、自增运算符、自减运算符
·任何类型的数据和字符串类型数据做相加操作的时候,其他数据类型会自动转换成为字符串类型。进行字符串拼接
如果其中一个操作数是字符串的时候,+号叫做字符串拼接符
·任何数据除了和字符串做相加运算外,先将字符串转为数字,再与NaN做算数运算的结果始终都是NaN,包括NaN自身和NaN做运算的结果也是NaN。
字符串如果是纯数字字符串转成数字,否则转换成NaN
var a = "nin"+"hao";//ninhao
var b = "1"+1;//11
var c = "h"+true;//htrue
var temp = 1-"2";//-1 字符串“2”转成了数字
var tmp = 1-"2a";//NaN——not a number
表达式和赋值运算符
代码规范:
- 注意层级缩进,tab=四个空格
- ;,后面都跟一个空格 运算符+= 前后都应该空空格
- 每一条语句后面都必须添加;分号
**表达式:**运算符和操作数组成的式子
赋值运算符:将等号右面的值赋值给等号左边的变量
复合赋值运算符:+= *= /= -=
var temp = 2+3;//temp的值为5
temp += 10;//temp的值为15
强制数据类型转换
任何其他数据类型除了和字符串做相加操作外,与数字类型做算数运算的时候,其他数据类型都会自动的转换成数字再进行运算
布尔值:true=1 false=0
特殊数据类型中:null=0 undefined=NaN
var temp = 1*"1";
alert(temp);//1_number
var tmp = 1+true;//2
var tp = 1+null;//1
var t = 1+undefined;//NaN
通过方法boolean()进行强制数据类型转换
将别的类型强制转为布尔值
数字0转成布尔值为false,所有非0的数字转成布尔值都为true
空字符串转成布尔值为false,所有非空字符串转成布尔值为true
null,undefined转成布尔值都是false
var temp = Boolean(1);//true
var tmp = Boolean(0);//false
var tp = Boolean(-1);//true
var t = Boolean("");//false
var m = Boolean("hello");//true
var p = Boolean(null);//false
var e = Boolean(undefined);//false
Number() 将别的数据类型转成数字
- 布尔值:true=1 false=0
- 字符串:纯数字的字符串 = 对应的数字、非纯数字的字符串 = NaN
- 特殊数据类型:null=0 undefined=NaN
parseInt() 取整(兼容Number的功能)
parseFloat()取浮点数 带小数的数字
var t = Number(true);//1
var e = Number(false);//0
var m = Number("20");//20
var p = Number("20a");//NaN
var te = parseInt("20a");//20
var tem = parseInt(3.14);//3
var temp = parseFloat("3.14");//3.14
var em = 1/0;//Infinity(无穷大)
一元运算符
只能操作一个值的运算符,叫做一元运算符。
a++;表达式值:++后置,先取a的值,然后进行+1操作
++a;表达式值:++前置,先进行+1操作,再取a值
上述两个表达式都是进行+1操作
a–; --a;
var a=5;
alert(a++);//5
alert(a);//6
var b=5;
alert(++b);//6
alert(b);//6
var c=5;
alert(c--);//5
alert(c);//4
var d=5;
alert(--d);//4
alert(d);//4
关系运算符
关系运算符中操作数为非数字的时候要遵从一下规律
//如果两个操作数都是数值,则数值比较
alert(5>3);//true
//如果两个操作数都是字符串,则比较两个字符串对应的字符编码值
//字符存储在计算机上,以二进制方式去进行存储
//ASCII码表,二进制码和字符对应密码表
alert("a" > "b");//false
//逐位进行比较,直到比较出大小,终止比较
alert("abc" > "abdf");//false
alert("abcf" > "abd");//false
//两个操作数有一个是数值,则将另一个转换成数值,再进行数值比较
alert(2 > true)//true==1 true
在等于和不等的比较上,如果操作数为非数值,则遵从以下规律:
//一个操作数为布尔值,则比较之前将其转换成数值,false转换成0,true转换成1
alert(1==true);//true
alert(1==false);//true
//一个操作数为字符串,则比较之前将其转成数值再进行比较
alert(20=="20");//true
//一个操作数为NaN,则==返回false,!=返回true
alert(1==NaN);//false
alert(a!=NaN);//true
alert(NaN == NaN);//false
alert(NaN != NaN);//true
//在全等和全不等,如果值和类型都相等,才返回true,否则返回false === !==
alert(20 === "20");//false
alert(20 === Number("20"));//true
逻辑运算符
与
表达式1 && 表达式2
只有当两个表达式的结果都为真的时候,与运算的结果才为真
【短路操作】当第一个表达式1为false的时候,第二个表达式2就不去执行,直接判断整个运算为false
或
表达式1 || 表达式2
只有当两个表达式的结果都为假的时候,或运算才为假
【短路操作】当第一个表达式为true的时候,表达式2就不去执行,判断整个表达式为true
非
!表达式
逻辑非运算遵从下述规律
//如果操作数是一个空字符串,返回true
alert(!"");//true
//如果操作数是一个非空字符串,返回false
alert(!"aa");//false
//操作数是0,返回true
alert(!0);//true
//操作数是任意非0的数值(包括infinity),返回false
alert(!Infinity);//false
//操作数是NaN,返回true
alert(!NaN);//true
//操作数是undefined,返回true
alert(!undefined);//true
进制转换
十进制转二进制:除二取余,倒序排列
二进制转十进制:110100=>12的平方+12的四次方+1*2的五次方
十进制转八进制/十六进制:先将十进制转为二进制,再将二进制转为八进制或者十六进制
二进制转八进制:从右向左,每三位一组,不足三位的使用0补齐,将每一组数转成十进制。
二进制转十六进制:从右向左,每四位一组,不足四位的使用0补齐,将每一组数转成十进制。