JavaScript基础
前端之家收集整理的这篇文章主要介绍了
JavaScript基础,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<table style="height: 30px; background-color: #afeeee; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">一、简介</td>
</tr></table>
概述:
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分(通俗的讲就是浏览器),广泛用于客户端的脚本语言,最早是在(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
JavaScript 组成:
核心(ECMAScript):ECMAScript 描述了该语言的语法和基本对象; 文档对象模型(DOM):DOM 描述了处理网页内容的方法和接口; 浏览器对象模型(BOM):BOM 描述了与浏览器进行交互的方法和接口;
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">二、代码存在形式和位置</td>
</tr>
</table>
1、存在形式:
js文件形式和嵌入到html中:
<script type"text/javascript"><span style="color: #000000;">
Js代码内容
2、JavaScript代码存放位置
- HTML的head中
- HTML的body代码块底部(推荐)
由于HTML代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。
1、变量声明
JavaScript变量声明一般使用var,如果不使用var则表示全局变量,一次性声明多个变量使用逗号隔开。
2、区分大小写
与python一样,变量test和变量TEST是不同的。
3、变量命名规则
- 第一个字符必须是字母、下划线(_)或美元符号($)
- 余下的字符可以是下划线、美元符号或任何字母或数字字符
- 除了上面两条规则,以下关键字不能作为变量名
4、注释
单行注释以双斜杠开头(//)多行注释以单斜杠和星号开头(/*),以星号和单斜杠结尾(*/)
单行 多行
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">四、数据类型</td>
</tr></table>
分类:
原始类型(5种):
- number - 如果变量是 Number 类型的
- string - 如果变量是 String 类型的
- object - 如果变量是一种引用类型或 Null 类型的
- undefined - 如果变量是 Undefined 类型的
- boolean - 如果变量是 Boolean 类型的
对象类型:
- 数组(arry)
- “字典”
- 时间(date)
- ......
1、数字(number)
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
转换:
- parseInt(..) 将某值转换成数字,不成功则NaN
- parseFloat(..) 将某值转换成浮点数,不成功则NaN
特殊值:
- NaN,非数字。可使用 isNaN(num) 来判断。
- Infinity,无穷大。可使用 isFinite(num) 来判断。
a=1;
b=2.2;
更多数值计算:
Math.E
常量e,自然对数的底数。
Math.LN10
10的自然对数。
Math.LN2
2的自然对数。
Math.LOG10E
以10为底的e的对数。
Math.LOG2E
以2为底的e的对数。
Math.PI
常量figs
/U03C0.gif。
<span style="color: #000000;">
Math.SQRT1_2
2的平方根除以1。
Math.SQRT2
2的平方根。
静态函数
Math.abs( )
计算绝对值。
Math.acos( )
计算反余弦值。
Math.asin( )
计算反正弦值。
Math.atan( )
计算反正切值。
Math.atan2( )
计算从X轴到一个点的角度。
Math.ceil( )
对一个数上舍入。
Math.cos( )
计算余弦值。
Math.exp( )
计算e的指数。
Math.floor( )
对一个数下舍人。
Math.log( )
计算自然对数。
Math.max( )
返回两个数中较大的一个。
Math.min( )
返回两个数中较小的一个。
Math.pow( )
计算xy。
Math.random( )
计算一个随机数。
Math.round( )
舍入为最接近的整数。
Math.sin( )
计算正弦值。
Math.sqrt( )
计算平方根。
Math.tan( )
计算正切值。
2、字符串(string)
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
name="wd" age=String('jack');
常见功能:
获取子序列
obj.slice(start,end) 切片
obj.toLowerCase() 大写
obj.toUpperCase() 小写
obj.split(delimiter,limit) 分割
obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp,replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
$数字:匹配的第n个组内容;
$&
内容;
$`:位于匹配子串左侧的文本;
$'
3、布尔类型
布尔类型仅包含真假,与Python不同的是其首字母小写。
假
4、null和undefined
1、数组
数组与python中列表类似,常见的方法有:
obj.push(ele) 尾部追加元素
obj.pop() 尾部获取一个元素
obj.unshift(ele) 头部插入元素
obj.shift() 头部移除元素
obj.splice(start,deleteCount,value,...) 插入、删除或替换数组的元素
obj.splice(n,0<span style="color: #000000;">,val) 指定位置插入元素
obj.splice(n,1<span style="color: #000000;">,val) 指定位置替换元素
obj.splice(n,1<span style="color: #000000;">) 指定位置
删除元素
obj.slice( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素连接起来以构建一个字符串
obj.concat(val,..) 连接数组
obj.sort( ) 对数组元素进行排序
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">六、运算符</td>
</tr></table>
1、算术运算符
赋值 y = 5,以下表格将向你说明算术运算符的使用:
二、赋值运算
给定 x=10 和 y=5,下面的表格解释了赋值运算符:
3、字符串运算
+ 运算符, += 运算符可用于连接字符串。
给定 text1 = "Good ", text2 = "Morning", 及 text3 = "",下面的表格解释了字符串运算符的使用:
4、比较运算
比较运算符用于逻辑语句的判断,从而确定给定的两个值或变量是否相等。
给定 x=5,下表展示了比较运算符的使用:
5、条件运算
variable = boolean_expression ?
,就把 true_value 赋给变量;如果它是 <span style="color: #008000;">//<span style="color: #008000;">示例
<span style="color: #0000ff;">var iMax = (a > 3) ? 3 : 4;<span style="color: #008000;">//<span style="color: #008000;">
输出4
6、逻辑运算
逻辑运算符用来确定变量或值之间的逻辑关系。
给定 x=6 and y=3,以下实例演示了逻辑运算符的使用:
7、位运算
位运算符工作于32位的数字上。任何数字操作都将转换为32位。结果会转换为 JavaScript 数字。
1、条件语句
JavaScript中支持两个中条件语句,分别是:if 和 switch
}</span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span><span style="color: #000000;">(条件){
}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{
}</span></pre>
1代码块 1
2代码块 2
代码
与 1 和 2代码
}
<span style="color: #008000;">//<span style="color: #008000;">例子
<span style="color: #0000ff;">switch<span style="color: #000000;">(name){
<span style="color: #0000ff;">case '1'<span style="color: #000000;">:
age = 123<span style="color: #000000;">;
<span style="color: #0000ff;">break<span style="color: #000000;">;
<span style="color: #0000ff;">case '2'<span style="color: #000000;">:
age = 456<span style="color: #000000;">;
<span style="color: #0000ff;">break<span style="color: #000000;">;
<span style="color: #0000ff;">default<span style="color: #000000;"> :
age = 777<span style="color: #000000;">;
}
2、循环语句
for语句
names = ["wd","tony","rain"<span style="color: #0000ff;">for(<span style="color: #0000ff;">var i=0;i<names.length;i++<span style="color: #000000;">){
console.log(i);
console.log(names[i]);
}
<span style="color: #008000;">//<span style="color: #008000;">第二种
<span style="color: #0000ff;">var names = ["wd","rain"<span style="color: #000000;">];
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var index <span style="color: #0000ff;">in<span style="color: #000000;"> names){
console.log(index);
console.log(names[index]);
}
for语句循环数组和字典:
a={"name":"wd","age":22 ( index
console.log(a[index]);
<span style="color: #008000;">//<span style="color: #008000;">列表循环,循环的是index(下标)
<span style="color: #0000ff;">var names = ["wd","rain"<span style="color: #000000;">];
<span style="color: #0000ff;">for(<span style="color: #0000ff;">var index <span style="color: #0000ff;">in<span style="color: #000000;"> names){
console.log(index);
console.log(names[index]);
}
while语句
}
语法:
分类:
1.普通函数
'123'
2.匿名函数:无函数名
setInterval("wd"500)函数无名字
3.自执行函数:创建函数并且自动执行,因为加了括号。
4.使用return:与python类似函数中使用return可使函数停止并且得到返回值
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">八、序列化、转义、异常处理</td>
</tr></table>
1、序列化
- JSON.stringify(obj) 序列化
- JSON.parse(str) 反序列化
2、转义
- decodeURI( ) 解码URl中未转义的字符和中文
- decodeURIComponent( ) 解码URI组件中的未转义字符
- encodeURI( ) 转码URI中的转义字符和中文
- encodeURIComponent( ) 转码转义URI组件中的字符和中文
- escape( ) 对字符串转义
- unescape( ) 给转义字符串解码
- URIError 由URl的编码和解码方法抛出
URL="https://www.sogou.com/web?query=马云"
new_url="https://www.sogou.com/web?query=%E9%A9%AC%E4%BA%91"new_url=<span style="color: #000000;">encodeURIComponent(URL)
结果:
"https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E9%A9%AC%E4%BA%91"
<span style="color: #0000ff;">var
a="wd"
<span style="color: #0000ff;">var b=<span style="color: #000000;">escape(URL)
结果:
"https%3A//www.sogou.com/web%3Fquery%3D%u9A6C%u4E91"
<span style="color: #0000ff;">var b=<span style="color: #000000;">unescape(URL)
结果:
"
https://www.sogou.com/web?query=马云"
3、eval
JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。
- eval()
- EvalError 执行字符串中的JavaScript代码
代码
错误
}
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">
<tr>
<td><span style="font-size: 16px;">九、javaScript作用域</td>
</tr></table>
JavaScript作用域归纳为以下几点:
1、javaScript采用函数作为作用域(同python),无块级作用域,let关键字除外。
(1==1 name='wd'输出wd
<span style="color: #0000ff;">function<span style="color: #000000;"> fun() {
<span style="color: #0000ff;">if(1==1<span style="color: #000000;">){
<span style="color: #0000ff;">var name='wd'<span style="color: #000000;">
}
}
fun();
console.log(name);#报错
2.函数作为一个作用域,如果出现函数嵌套函数,则就会出现作用域链。
<div class="cnblogs_code">
name = "wd" name = "seven" name = "jack"输出jack
如上述代码则出现三个作用域组成的作用域链,如果出现作用域链后,那么寻找变量时候就会出现顺序,对于上述实例:
当执行console.log(name)时,其寻找顺序为根据作用域链从内到外的优先级寻找,如果内层没有就逐步向上找,直到没找到抛出异常。
name = 'wd'
<span style="color: #0000ff;">function<span style="color: #000000;"> Func(){
<span style="color: #0000ff;">var name = "eric"<span style="color: #000000;">;
<span style="color: #0000ff;">function<span style="color: #000000;"> inner(){
console.log(name);
}
name </span>= 'jack'<span style="color: #000000;">;
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> inner;
}
<span style="color: #0000ff;">var res =<span style="color: #000000;"> Func();
res();
<span style="color: #008000;">//<span style="color: #008000;"> 输出结果: jack
按照示例一分析,解释器从上到下解释,执行函数Func,name变量得值由eric变成jack,最后再去寻找name变量时候,name值为jack,所以输出jack
name = 'wd'
<span style="color: #0000ff;">function<span style="color: #000000;"> Func(){
<span style="color: #0000ff;">var name = "seven"<span style="color: #000000;">;
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> Bar;
}
<span style="color: #0000ff;">var res =<span style="color: #000000;"> Func();
res();<span style="color: #008000;">//<span style="color: #008000;">输入wd
<span style="color: #008000;">//
<span style="color: #008000;">JavaScript中如果创建值而不赋值,则该值为 undefined,如:
<span style="color: #0000ff;">var<span style="color: #000000;"> name;
console.log(name);
<span style="color: #008000;">//<span style="color: #008000;">
输出:undefined
<span style="color: #008000;">//<span style="color: #008000;">在函数内如果这么写:
<span style="color: #0000ff;">function<span style="color: #000000;"> Foo(){
console.log(name);
<span style="color: #0000ff;">var name = 'seven'<span style="color: #000000;">;
}
Foo();
<span style="color: #008000;">//<span style="color: #008000;"> 输出:undefined
<span style="color: #008000;">//<span style="color: #008000;">总结:上述代码,不报错而是输出 undefined,其原因是:JavaScript的函数在被执行之前,会将其中的变量全部声明,而不赋值。所以,相当于上述实例中,函数在“预编译”时,已经执行了var name;所以上述代码中输出的是undefined
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0">