javascript基础¶
1.js初识¶
JavaScript
独立的语言,浏览器具有js解释器
JavaScript代码存在形式:
-Head中
# 默认为javascript代码,也可以添加type="text/javascript"
<script>
//javascript代码
</script>
-body中
-文件
<script src='js文件路径'></script>
解释器从上到下依次执行,如果scrip标签放在head中,若加载不出来,则body中标签内容不会显示,为了避免出现这种问题,则采用:js代码放置在<body>标签内部的最下方
存在于HTML中
<script>标签中内容单行注释用//,多行注释用/* */
-写js代码:
可以在HTML文件中编写;临时,浏览器的终端console
2.变量¶
name='***' # 全局变量
var name='***' # 局部变量
3.数据类型¶
3.1数字
a="18" #顶一个全局变量a,存储字符串18
i=parseInt(a) #将字符串转化为int,并保存至i变量
a=18; #定义了一个int型数据
3.2字符串
a="asq"
a.charAt(0) #获取到了字符
a.substring(起始位置,结束位置 ) #取出大于等于起始位置且小于结束位置的字符串
a.lenght #获取当前字符串长度
3.2.1定时器实例
<script>
function f1() {
console.log(1)
}
//创建一个定时器
//setInterval("alert(123);",2000)
setInterval("f1();",2000);
</script>
3.2.2跑马灯实例
<div id="i1">欢迎老男孩莅临指导</div>
<script>
function change(){
// 根据ID获取指定标签的内容,定义局部变量接收
var tag=document.getElementById('i1');
var content=tag.innerText;
// 获取标签内部的内容
var f=content.charAt(0);
var l=content.substring(1,content.length);
var new_content=l+f;
tag.innerText=new_content;
}
setInterval("change()",2000)
</script>
字符串的split()函数
>a="5456630"
<"5456630"
>a.split('6')
<["545", "", "30"]
3.3布尔
python大写 TRUE、FALSE
js小写 true、false
3.4列表(数组)
python中称列表,而js中称数组
a=[11,22,33]
a.splice(start,deleteCount,value,..)插入、删除或替换数组的元素
a.splice(1),则删除index=1及以后的所有元素,只剩下index为0的元素
a.splice(1,0,99)在index=1处删除0个元素,并插入99
a.join('分隔符')
例如:a.join('-') #11-22-33 将数组转化为字符串
3.5字典
a={'k1':'v1','k2':'v2'}
>
4.for循环¶
1.循环输出值
a=[11,22,33]
for(var item in a){
#循环输出索引console.log(item);
console.log(a[item]);
}
2.循环输出key
a={'k1':'v1','k2':'v2'}
for(var item in a){
console.log(item);
#循环输出valueconsole.log(a[item]);
}
3.有序的循环,不支持字典
a=[11,22,33]
for(var i=0;i<a.length;i=i+1){
console.log(a[i])
}
# 条件语句
if(条件){
}else if(条件){
}else{
}
==与===的区别
==表示只需要满足值相等,而===表示类型与值均要相等。
例如:
1=="1"
true
1==="1"
false
## 函数
function 函数名(a,b,c){
}
函数名(1,2,3)
5.函数¶
普通函数:
function func(){
}
匿名函数:
function func(arg){
return arg+1
}
setInterbal("func()",5000);
setInterbal(function(){
console.log(123);
},5000);
自执行函数:
function func(arg){
console.log(arg);
}
func()
//自动创建并执行
(function func(arg){
console.log(1);
})(1)
6.js序列化及转义¶
//JSON.stringify 将对象转换为字符串
//列表转字符串
li=[11,22,33,4,5]
s=JSON.stringify(li)
//JSON.parse 将字符串转换为对象类型
//字符串转列表
newLi=JSON.parse(s)
7.eval¶
python:
val=eval(表达式)
exec(执行代码)
JavaScript:
eval # 既能跟表达式又能跟执行代码
8.时间¶
Date
var d=new Date()
d.getxxx 获取
d.setxxx 设置
9.作用域¶
其他语言:以代码块作为作用域
python中以函数作为作用域
1.javascript以函数作为作用域;
2.函数的作用域在函数未被调用之前,已经创建;
3.函数的作用域存在作用域链(一层套一层),并且也是在被调用之前创建。
4.函数内局部变量提前声明
function func(){
console.log(xxoo);
}
func();
//程序直接报错
function func(){
console.log(xxoo);
var xxoo=''alex;
}
func();
//undefined
在JavaScript中国var n未赋值,则为undefined
在进入函数中,会生成作用链,找到内部所有的局部变量,执行局部变量声明。例如第二个代码,生成作用链后,找到了局部变量xxoo,则在函数外面会声明var xxoo,此时未赋值,则结果为undefined
10.JavaScript面向对象¶
function foo(){
var xo='alex';
}
foo()
function foo(){
this.name='alex';
}
var obj=new foo();
obj.name
原型:
function Foo(n){
this.name=n;
}
# Foo的原型
Foo.prototype={
'sayName':function(){
console.log(this.name)
}
}
obj1=new Foo('we');
obj1.satName();
obj2=new Foo('wee');
11.词法分析¶
<script>
function t1(age){
console.log(age); // function age()
var age=27;
console.log(age); //27
function age(){}
console.log(age); //27
}
t1(3);
</script>
JavaScript在创建的时候会对function进行词法分析,函数会在创建时形成一个活动对象,ActiveObject,简称AO
1.分析形式参数:此例为age,即生成一个AO.age=undefined的活动对象==>然后根据进行赋值AO.age=3。
分析局部变量;
2.在第三行有一个局部变量,跟age重名,此时会生成一个AO.age=undefined的活动对象,AO.age=3会被覆盖;
3.分析函数声明表达式:此时声明了一个age的函数。所以此时的活动变量为:AO.age=function。优先级最高。
词法分析结束后函数开始执行,此时的AO.age=function,函数执行时会首先从AO中获取值,所以会首先将function赋给age,所以整个函数的输出为:
function
27
27