HTML,CSS和JavaScript是网页设计的基础。HTML和CSS定义了静态的效果,而JavaScript则能够体现出一些动态的效果。在已经掌握一种或者多种编程语言的基础下,学习JS很容易,下面看看一些基本的使用方法。javascript
1. JavaScript的位置。html
和CSS相似,咱们能够直接写代码块,也能够引用外部文件。理论上,<script src="xxx"></script>能够放在<head>里面,也能够放在<body>里面,可是从效率考虑,若是script的连接比较慢或者错误,<head>里面可能致使整个页面半天加载不出来,所以,咱们通常推荐放在<body</body>代码块的底部。若是只是暂时的测试性质的编码,咱们甚至能够直接在浏览器上的console上使用。F12或者Inspect ,而后选择console就能够了java
2.定义变量python
直接写 name=‘james’ 定义了全局变量,若是在函数里面定义,指定一个var 关键字,则表示局部变量编程
3.数字json
JS不区分float或者int,不过咱们能够经过parseInt或者parsefloat来转换字符c#
例如:数组
a="222.2" parseFlaot(a) 222.2 parseInt(a) 222
4. 字符串 浏览器
这个和其余语言几乎同样,有常见的属性和方法。cookie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
obj.length 长度
obj.trim() 移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n) 返回字符串中的第n个字符
obj.concat(value, ...) 拼接
obj.indexOf(substring,start) 子序列位置
obj.lastIndexOf(substring,start) 子序列位置
obj.substring(
from
, to) 根据索引获取子序列
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个组内容;
$&:当前匹配的内容;
$`:位于匹配子串左侧的文本;
$':位于匹配子串右侧的文本
$$:直接量$符号
|
实例:×××灯,不停的循环输出文字
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="d1">欢迎领导视察工做</div> <script> //定义函数 function change(){ //经过id获取标签 var dd=document.getElementById("d1") //控制台能够查看输出,很好的查错方式 console.log(dd) var content=dd.innerText console.log(content) //获取第一个字符 var f=content.charAt(0) //获取子字符串 var l=content.substring(1,content.length) //字符串拼接 var new_content=l+f; //从新赋值 dd.innerText=new_content console.log(new_content); } //定时器,每隔1000毫秒执行一下change() setInterval('change()',1000) </script> </body>
5. 布尔值, true和false,注意是小写
== 比较值相等
!= 不等于
=== 比较值和类型相等
!=== 不等于
|| 或
&& 且
6. 数组,和python的列表差很少。
方法以下,其中splice比较特殊 他有3个参数,第一个参数表示插入的位置,第二个参数表示删除几个值,第三个表示插入的新值。所以splice(0,1)表示删除第一个值,splice(0,0,20)表示第一个值前面插入一个值20
obj.length 数组的大小
obj.push(ele) 尾部追加元素
obj.pop() 尾部获取一个元素
obj.unshift(ele) 头部插入元素
obj.shift() 头部移除元素
obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素
obj.splice(n,
0
,val) 指定位置插入元素
obj.splice(n,
1
,val) 指定位置替换元素
obj.splice(n,
1
) 指定位置删除元素
obj.
slice
( ) 切片
obj.reverse( ) 反转
obj.join(sep) 将数组元素链接起来以构建一个字符串
obj.concat(val,..) 链接数组
obj.sort( ) 对数组元素进行排序
|
7. 字典
例如
a={'name':'James','age':30}
使用和Python同样
8. for循环;for循环有2种形式
第一种形式
例如直接循环数组,他输出的是索引而不是值
a=[11,22,33,44] for(var item in a){console.log(item);} 0 1 2 3 for(var item in a){console.log(a[item]);} 11 22 33 44
直接循环字典,输出的也是key而不是value
b={"name":"alex","age":20} for(var item in b){console.log(item);} name age undefined for(var item in b){console.log(b[item]);} alex 20
第二种形式, 就和其余语言同样;不过注意若是要输出字典,由于字典的key的数据类型是无序散乱 所以这里就不适合了
for(var i=1;i<a.length;i++){console.log(i)} 1 2 3 for(var i=1;i<a.length;i++){console.log(a[i])} 22 33 44
除了for循环,js也支持while循环,这个和其余语言没区别。
基本格式:
while (条件){ }
9. 条件语句
基本格式:
if(条件){ } else if(条件) {} else{ }
另一个常见的条件语句是switch,这个东西在Python里面是没有的
例如
name="2" switch(name){ case '1': age = 123; break; case '2': age = 456; break; default : age = 777; } 456
10. 函数
Javascript里面有3种函数,分别是普通函数,匿名函数和自执行函数。格式以下所示。
普通函数:单独的定义,而后再调用 function func(){ } 匿名函数:直接在须要调用的地方写函数 setInterval(function(){ console.log(123); },5000) 自执行函数(建立函数而且自动执行): (function(arg){ console.log(arg); })(1)
11. 序列化
Python里面能够经过json和pickle把对象转换成字符串,这个过程叫作序列化。json能够转化标准的数据类型,而pickle能够转化自定义的对象;
javascript里面也能够经过json来进行序列化和反序列化。格式是
JSON.stringify() 将对象转换为字符串
JSON.parse() 将字符串转换为对象类型
一个例子是自定义一个字典保存数据,而后序列化以后保存到cookie中。
12. eval
相似的,Python里面有eval和exec来执行表达式。eval执行表达式,有返回值;exec能够执行复杂的代码,可是没有返回值;
Javascript里面的eval则是二者之和,能够执行复杂的表达式和代码,而后返回结果
13. 做用域
======== 1. 以函数做为做用域 (let)=========
其余语言: 以代码块做为做用域
xo = "alex"; function func(){ // var xo = 'eric'; function inner(){ // var xo = 'tony'; console.log(xo); } inner() } func() // 报错
Python: 以函数做为做用域
状况一:
def func(): if 1==1: name = 'alex' print(name) func() // 成功
状况二:
def func(): if 1==1: name = 'alex' print(name) func() print(name) // 报错
JavaScript: 以函数做为做用域
function func(){ if(1==1){ var name = 'alex'; } console.log(name); } func()
======== 2. 函数的做用域在函数未被调用以前,已经建立 ========
function func(){ if(1==1){ var name = 'alex'; } console.log(name); }
====== 3. 函数的做用域存在做用域链,而且也是在被调用以前建立 ========
示例一:
xo = "alex"; function func(){ // var xo = 'eric'; function inner(){ // var xo = 'tony'; console.log(xo); } inner() } func() ------ alex
示例二:
xo = "alex"; function func(){ var xo = 'eric'; function inner(){ console.log(xo); } return inner; } var ret = func() ret() ---- eric
示例三:
xo = "alex"; function func(){ var xo = 'eric'; function inner(){ console.log(xo); } var xo = 'tony'; return inner; } var ret = func() ret() ------ tony
================= 4. 函数内局部变量 声明提早 ==================
function func(){ console.log(xxoo); } func(); // 程序直接报错 function func(){ console.log(xxoo); var xxoo = 'alex'; } 解释过程当中:var xxoo; func(); // undefined
14. Javascript面向对象
function Foo(n){ this.name = n; this.sayName = function(){ console.log(this.name); } } var obj1 = new Foo('we'); obj1.name obj1.sayName() var obj2 = new Foo('wee'); obj2.name obj2.sayName()
Foo至关于构造函数
this相似于Python里面的self,指代的对象
建立新对象经过new实现
相似的Python代码
class Foo: def __init__(self,name): self.name = name def sayName(self): print(self.name) obj1 = Foo('we') obj2 = Foo('wee')
注意他们的区别在于Python把sayName这个方法保存在类里面,而JS会分别在对象里面都保存了一份,所以比较浪费内存。
能够经过建立原型的方式解决这个重复的问题
function Foo(n){ this.name = n; } # Foo的原型 Foo.prototype = { 'sayName': function(){ console.log(this.name) } } obj1 = new Foo('we'); obj1.sayName() obj2 = new Foo('wee');