js引入方式
1.直接引入
<script><script/>
<script type="text/javascript"><script/>
<script language="javascript"><script/>
2.间接引入
<script src=""></script>
间接引入框架最好用cdn加载在别人的服务器
注意最好放在body
的最后
注释方式
- 单行注释 ctrl+/
- 多行注释 ctrl+shift+/
输出方式
-
弹框输出
alert();
-
文档流输出
document.write();
-
控制台输出
console.log();
文档流输出
显示在页面上
控制台输出
建议用这个调试 ,百度或者途牛官网你去控制台可以看见招聘的东西
记住这个报错
console.log(age)
输出:age is not defined,因为age没有定义
如果是
var a;
console.log(a)
输出:undefinde
因为没有赋值
特殊的变量名: name 系统默认定义的name的值为控的字符串
弹框输出
不建议用,会中断
代码执行,有他,其他的代码都不执行(可以用来确定删除)
js变量
js中采用var
声明变量
语法
var 变量名; 生明
var 变量名=值; 声明并赋值
同时声明多个变量
var a,b,c;
a=10;
b=20;
c=30;
console.log(a,b,c)
变量命名规范
- 变量名有数字、字母、下划线、$组成,
不
能以数字开头
var 1a;
控制台报 Invalid or unexpected token(无效的定义)
-
严格区分
大小写
-
可以使用中文(不建议)
var 激动="好激动"
-
不能使用系统关键字(重点)
比如 var default if else break、continueif else var continue break let const等 如果不晓得的话直接var一下, Unexpected token 'break'(意外标记,即使用了关键字)
-
采用小驼峰命名法:
firstFriend helloWorld name
注意
var声明的变量存在变量提升(要知道)
注意
意思是声明提前,赋值并未提前
比如:console.log(g)
var g=1
控制台输出:undefinded
而不是not definded
js常见的数据类型(笔试题或面试题)
- 方式一:所有的数据都是对象
- 方式二:两种数据类型
值类型:string number boolean null undefinded(值和变量放一起)
引用类型:object (值和变量不放在一起)
-
方式三(别人问的):六种
注意
null的检测结果为object
typeof检测结果:
string 字符串 string
number 数值类型 number
boolean布尔类型 boolean
null空类型 object
undefinded未定义类型 undefinded
object对象类型 包括数组,function object/function
检测数据类型typeof
方式一:typeof(被检测的变量)
方式二:typeof 被检测的变量
undefined类型
1、变量声明后未赋值,值为undefined
2、直接将变量的值赋值为undefined
3、函数的参数未传入实际的值,该参数未undefined
4、函数运行后,未给出返回值(return),则未undefined
5、对象的属性未进行定义,值也是undefined
JavaScript简称js,也称为ECMAJavaScript
defer延迟加载(基本用不上)
null类型
null空对象指针
null和undefined的区别
1、类型不同
Null为空对象指针,为object类型,undefined的类型为Undefined
2、undefined未定义类型,以后可以装任意的数据类型
;而null为空对象指针,但以后接收对象类型
var nu=null;
console.log(typeof nu)
输出:object
两种等号
- ==(恒等):判断值是否相等,返回boolean类型
console.log(null==undefined)//true,因为都是空的
- ===(全等):判断值和类型是否相等,返回boolean类型
console.log(null===undefined)//false
- undefined和null的区别
1、类型不同
Null为空对象指针,为object类型,undefined的类型为Undefined
2、undefined未定义类型,以后可以装任意的数据类型;而null为空对象指针,但以后接收对象类型
js不区分单双引号,两者均不解析变量
var name='旭哥'
console.log('name有没有通宵')//name有没有通宵
-
变量的拼接 + 有引号就拼接
var newStr=name+‘有没有通宵’
console.log(newStr)
输出:旭哥有没有通宵
拼接,先正常写需要的,然后在变量左右写’'然后再在它左右写+
var name=“旭哥”
var age=20
var newStr2=’’+name+‘说:"我今年’+age+‘岁"’
console.log(newStr2)旭哥说:“我今年20岁”
转义字符 \
var a="<p style=\"color:red\"></p>"
输出:"
"单双引号嵌套
注意
建议使用单引号,和标签的双引号区分
var a='<p style="color:red\"></p>
输出:"
"boolean类型
- 常用于判断
- 在计算时会自动将true为1,false为0
数值类型number
-
整形和浮点型打印类型都是number
-
整占4字节(取值范围:2的正负53次方),浮占8字节
注意
整形超过取值范围则自动转换为浮点型保存 浮点型后若小数点无具体的值,则自动转为整形
var a=10.00000 console.log(a)
进制的转换(麻烦)
注意
字母不区分大小写
数字采用0开头,首先考虑八进制,若后面数字超过7,则该数字为十进制
0x代表十六进制,在进制内不区分大小写
var num=023;//19 0开头默认优先考虑8进制
var num1=029;//十进制
console.log(num1)//29
var num2=0xa;//0x代表十六进制
var num3=0xA;
console.log(num2)//11
console.log(num3)//11
console.log(num)//19
console.log(typeof num)//number
科学计数法
e代表10的多少次方
注意
e也为数值类型
var num=3.14e2;//3.14x10x10
consolo.log(typeof num)//number
var num=3.14e-2;//0.0314
无穷 Infinity
除数不能为0,类型为number
var num=0/10;//0 number
var num=10/0;Infinity number
console.log(num)//Infinity
console.log(typeof num)//number
小数的计算
注意
永远不相信js中的小数的计算,更不能将其结果进行判断,因为不准
单精度和双精度的影响
遇到小数乘以倍数变为整数判断
console.log(0.1+0.2)//部位0.3
console.log(0.2+0.1 == 0.3)//false
console.log(0.2+0.3 == 0.5)//true
console.log(1+2 == 3)//true
NaN
-
not a number
不是一个数
的数值类型 -
NaN自己都不认识自己
console.log(NaN==NaN)//false console.log(NaN===NaN)//false
-
注意
纯数字的字符串在除了+运算时直接转换为数值var num=2*'200' console.log(num)//400 var num=2+'200'; console.log(num)//2200
注意当加号两边为数值,则进行加法运算,当两边有字符串,则为拼接号
var num=10+'10'; console.log(num)//1010
-
只要有NaN的计算,其结果都为NaN
除了NaN+'2'这种
console.log(NaN == NaN)//false console.log(NaN === NaN)//false var num = NaN + 3;//NaN var num = NaN - 3;//NaN var num = NaN * 3;//NaN var num = NaN / '3';//NaN console.log(num) var num5=NaN+'3' console.log(num5)//NaN3
-
如何产生的?
希望运算的到一个数值类型,但没有得到
var num=2*'傻逼';//NaN
var num=2*'300px';
console.log(num)//NaN
console.log(typeof num)
对象类型
- 对象的定义方式
对象 object
1.通过实例化生成对象
new Object() 生成的对象叫做实例化对象
var obj=new Object();
console.log(obj)//{}
console.log(typeof obj)//object
2.使用字面量的方式定义
var obj={};
console.log(obj)//{}
console.log(typeof obj)//object
关键
js中最大的对象为window
对象的属性---------理解为变量
对象的方法----------理解为函数
- 定义对象的属性
var name='张三'
console.log(window.name)//张三
var dog=new Object();
dog.name='后裔';
dog.sex='男';
console.log(dog.name)//大黄
-
定义对象的方法
dog.say=function(){ console.log('我会在家等你回来~~') }
- 调用对象的方法
dog.say()
-
在生成对象时定义属性和方法(推荐使用)
var cat={ //定义属性 name:'果冻', age:'2', //定义方法 eat:function(){ console.log('我什么都爱吃') } } console.log(cat.name,cat.age)//果冻,2 //调用方法 cat.eat()
类型的转换
-
隐式转换(了解)(自动转换)
1、
纯数字的字符串在运算时,会自动转换为数值进行计算(除了+,'+'作为连接符使用)
2、布尔类型的值在运算时,true相当于1,false相当于0
3、只有空字符串(’’)会转换为false,只要有内容(空格也算),则会转为true
4、数值类型除了0以外其余都转换为true(除了NaN),0将转换为false
tofixed(n)设置固定的小数位数
console.log(5*'5')//25 number console.log(5*'5a',typeof)//NaN number console.log(5+'5')//55 string +两侧为字符串则拼接 console.log(2+true)//3 number //只有空字符串('')会转换为false,只要有内容,则会转为true var flag=''; if(flag){ console.log('true') }else{ console.log('false') } 结果:false
-
强制转换为boolean类型
注意
boolean常用于判断字符串里面有值,转换为Boolean,为true
字符串里面为空,转换为Boolean,为false
var str=5; var res=Boolean(str) console.log(res)//true var a='abc'//true var b=' '//true var c=''//false
-
强制转换为字符串类型
String()
toString()
建议使用var num=10; //var res=String(num); var res=num.toString(); console.log(num) console.log(typeof res)//string
-
强制转为数值类型
强制转为整形parseInt()
(重点)注意
1.小数转整形的时候,直接将小数点后去掉,不存在四舍五入 2.可以识别16进制和10进制
不识别八进制
3.识别字符串,结果为第一个字母之前的值,若第一个字母之前没有值,则为
NaN
var num=9.1;//9 var num=9.9;//9 var num='0xa';//10 可以识别16进制 var num='023'//23 不识别8进制,默认为十进制 var num='123abc'//123 解析字符串 结果为第一个字母之前的值 var num='1a2b3c';//1 var num='abc123';//NaN var res=parseInt(num) console.log(res)//9
parseInt(String,radix)
(了解)var str='023'; var res=parseInt(str)//23 十进制,不写基数,默认十进制 var res=parseInt(str,0)//23 十进制 var res=parseInt(str,8)//19 8进制 var res=parseInt(str,16)//35 16进制
强制转为浮点型parseFloat()
1.解析字符串,保留小数
2.不解析进制
3.识别小数,但只识别第一个小数点
var str='0xa';//0 不解析进制 var str='123abc'; //123 解析字符串,保留第一个字母之前的,可以取像素 var str='3.14a';//3.14 var str='3.140080.1221';//3.14008 只识别第一个小数点 var res=parseFloat(str)
强制转换为数值类型Number()
1.解析进制(十六进制)
2.只解析纯数字
var str='0xa';//10 var str='123abc';//NaN var str='123';//123 var res=Number(str) console.log(res)
补充toFixed()
保留指定的小数位数,能四舍五入,变为string类型var num=36.00; console.log(num)//36 var num=25; var num=3.1415;//3.14 var num=9.9999;//10.00 var res=num.toFixed(2); console.log(num)//25.00 string
-
总结转换的表格
parseInt() parseFloat() Number() toFixed() 解析字符串 是,保留第一个字母之前的值 是,保留小数 否 否 解析进制 是,只解析16进制 否 是 否 解析数 是,去掉小数部分,不四舍五入 是,只识别第一个小数点之前 是,只解析纯数字 是