JavaScript--基础
javascript 是一门编程语言。浏览器内置了javascript语言的解释器。所以可以在浏览器上按照javascript的语言规则编写代码。浏览器作出解释。
一、javascript存在形式
1:直接编写在body页面的底部。
html 按照顺序加载,先展示基本的页面,在展示动态的javascript比较合理。
2:在headh中,通过引入文件
<script type="text/javascript" src="js文件"></script>
二、变量;
变量类型:全局变量、局部变量
带var进行声明的是局部变量
<script> //全局 name = "seven"; function func(){ //局部 var age=18; //全局 gender="男" } </script>
三、数据类型
1、数值
原始类型:
- 数字
- 字符
- 布尔值
对象:
- 字典
- 数组
null和undefined
nulll 是javascript的关键字,表示特殊值,用来描述空值。
undefined是一个特殊值,表示变量未定义。
1:数字 number
javascript中的number 不区分整数和浮点,所有的数值均用浮点表示。
创建数字:
-
- a = 123;
- a2 = new Number(123) 可以使用a2.xxxx 调用方法
转换方法
-
- parseInt()将字符转换为数值,不成功则为NaN
- parseFloat()将数值转换为浮点,不成功则为NaN
- a.tostring() 将数值转换为字符串
- valueof() 查看具体的数值
- toFixed() 四舍五入
判断类型
-
- typeof a
特殊值:
-
- NaN , 非数值,可以使用isNaN()判断
- Infinity,无穷大。
- isFinite 用来判断数值是否正常数值
2、 字符串
跑马灯;
1 <script type="text/javascript"> 2 setInterval(function(){ 3 dl = document.setElementByid("i1"); 4 dl_text = dl.innerText; 5 console.log(typeof dl_text); 6 first_char =dl_text[0]; 7 sub_char=dl_text.selice(1,dl_text.length) 8 new_str = sub_char + first+char; 9 dl_innerText = new_str; 10 },500); 11 </script>
在javascript中,字符串是不可变的。可以访问字符串任意位置的文本,但是未提供可以修改已知字符串内容的方法。
1 obj.length 长度 2 3 obj.trim() 移除空白 4 obj.trimLeft() 5 obj.trimRight) 6 obj.charAt(n) 返回字符串中的第n个字符 7 obj.concat(value, ...) 拼接 8 obj.indexOf(substring,start) 子序列位置 9 obj.lastIndexOf(substring,start) 子序列位置 10 obj.substring(from, to) 根据索引获取子序列 11 obj.slice(start, end) 切片 12 obj.toLowerCase() 大写 13 obj.toUpperCase() 小写 14 obj.split(delimiter, limit) 分割 15 obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效) 16 obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。 17 obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项, 18 $数字:匹配的第n个组内容; 19 $&:当前匹配的内容; 20 $`:位于匹配子串左侧的文本; 21 $':位于匹配子串右侧的文本 22 $$:直接量$符号
3、布尔值
== 仅仅进行值的比较
=== 进行值和类型的比较
4、数组
javascript中的数组类似python中的列表
摘抄他人博客的常用方法
1 javascript之数组操作 2 1、数组的创建 3 4 var arrayObj = new Array(); //创建一个数组 5 6 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 7 8 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 9 10 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。 11 12 2、数组的元素的访问 13 14 var testGetArrValue=arrayObj[1]; //获取数组的元素值 15 16 arrayObj[1]= "这是新值"; //给数组元素赋予新的值 17 18 3、数组元素的添加 19 20 arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度 21 22 arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 23 24 arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。 25 26 4、数组元素的删除 27 28 arrayObj.pop(); //移除最后一个元素并返回该元素值 29 30 arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移 31 32 arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素 33 34 5、数组的截取和合并 35 36 arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素 37 38 arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组 39 40 6、数组的拷贝 41 42 arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向 43 44 arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向 45 46 7、数组元素的排序 47 48 arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址 49 50 arrayObj.sort(); //对数组元素排序,返回数组地址 51 52 8、数组元素的字符串化 53 54 arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。 55 56 toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用
5、序列化
- json.stringify(obj) 转换为字符串
- json.parse(str) 反序列化
6、转义
1 decodeURI( ) URl中未转义的字符. 函数可对 encodeURI() 函数编码过的 URI 进行解码。 2 decodeURIComponent( ) URI组件中的未转义字符 3 encodeURI( ) URI中的转义字符 4 encodeURIComponent( ) 转义URI组件中的字符 5 escape( ) 对字符串转义 6 unescape( ) 给转义字符串解码 7 URIError 由URl的编码和解码方法抛出
7、eval
javascript总的eval是python中 eval和exec的合集。既可以编译代码也会可获取返回值。
8、正则
javascript提供2个重要函数
test(string) 用于检测正则是否匹配
exec(string) 用户获取正则表达式匹配的内容
四、语句和异常
1、条件语句
if 语句
if() {
} else if(){
}else {
}
swith 语句
swith(a){
case "1":
xxx;
break;
case "2" :
xxxx;
break;
default:
xxxx;
}
2: 循环语句
1 一:类似python的写法 2 for(var index in names){ 3 console.log(index); 4 console.log(names[index]); 5 } 6 7 二、类似其他语言的写法 8 for(var i=0;i<names.length;i++){ 9 console.log(i); 10 console.log(names[i]); 11 } 12 三、while循环 13 while(条件){ 14 // break; 15 // continue; 16 }
3、异常处理
1 try { 2 xxxx 3 } 4 catch (e) { 5 xxxxx 6 } 7 finally { 8 此部分的代码总是会被执行 9 }
五、基本函数
1:基本函数
javascript的函数分为3类, 普通函数、 匿名函数、自执行函数
1 // 普通函数 2 function func(arg){ 3 alter(arg) 4 } 5 6 // 匿名函数 7 var func = function(arg){ 8 alter(arg) 9 } 10 11 // 自执行函数 12 (function(arg){ 13 alter(arg) 14 })('在此处传递参数')
2、作用域
所有的作用域均在创建函数且未执行的时候就已经存在
3、闭包
在外部获取函数内部的变量。 类似 python的装饰器。通过return 获取内部函数变量。闭包 是基于作用域实现的。
1 function f2(){ 2 var arg= [11,22]; 3 function f3(){ 4 return arg; 5 } 6 return f3; 7 } 8 9 ret = f2(); 10 ret();
4、面向对象
javascript中没有类的概念。但是有方法。 方法充当了构造函数。this 和self 一致。 创建对象的时候需要使用new
function Foo (name,age) { this.Name = name; this.Age = age; this.Func = function(arg){ return this.Name + arg; } } var obj = new Foo('alex', 18); var ret = obj.Func("sb"); console.log(ret);
当有多个代码段使用同一个方法的时候,将会创建多个对象,会浪费内存。 这个时候需要使用原型。
prototype
方式一:
创建一个字典,在字典内添加内容
Foo.prototype = {
GetInfo: function(){ return this.name + this.age},
Func: function(arg){ return this.name + this.age}
方式二、
逐一的添加内容
Foo.prototype.Func = function(){alter(this.name) }
Foo.prototype.Func2 = function(){alter(this.name) }

浙公网安备 33010602011771号