1. javascript作为一种脚本语言可以放在html页面中任何位置,但是浏览器解释html时是按先后顺序的,所以前面的script就先被执行。比如进行页面显示初始化的js必须放在head里面,因为初始化都要求提前进行(如给页面body设置css等);而如果是通过事件调用执行的function那么对位置没什么要求的。
2. 通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时。如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数。通常的做法是把函数放入 <head> 部分中,或者放在页面底部。这样就可以把它们安置到同一处位置,不会干扰页面的内容。
3.innerhtml是一个属性,所以用“=”
JavaScript 可以通过不同的方式来输出数据:
使用 window.alert() 弹出警告框。
使用 document.write() 方法将内容写到 HTML 文档中。
使用 innerHTML 写入到 HTML 元素。
使用 console.log() 写入到浏览器的控制台。
4.document.write()的覆盖问题。document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open。每次写完关闭之后重新调用该函数,会导致页面被重写。
innerHTML则是DOM页面元素的一个属性,代表该元素的html内容。你可以精确到某一个具体的元素来进行更改。如果想修改document的内容,则需要修改document.documentElement.innerElement。
innerHTML很多情况下都优于document.write,其原因在于其允许更精确的控制要刷新页面的那一个部分。
<!DOCTYPE html>
<html>
<body>
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<script>
document.write(Date());
</script>
</body>
</html> 不会被覆盖
<!DOCTYPE html>
<html>
<body>
<h1>我的第一个 Web 页面</h1>
<p>我的第一个段落。</p>
<button onclick="myFunction()">点我</button>
<script>
function myFunction() {
document.write(Date());
}
</script>
</body>
</html> 会被覆盖 ,新页面只有日期
5. 变量是一个名称。字面量是一个值。var和let有区别。let声明的变量只在当前代码块起作用。如函数内的if内的let变量作用域只在if内
6. var person = {firstName:"John", lastName:"Doe"}; // Object 通过对象字面量赋值
注意对象属性通过:赋值
7. 反斜杠\ 用于换行
8.您可以在一条语句中声明很多变量。该语句以 var 开头,并使用逗号分隔变量即可:
var lastname="Doe", age=30, job="carpenter";
作用域规则
c/c++中声明的变量作用域与let相同
9.实参个数如果比形参少,那么剩下的默认赋值为 undefined,如果实参传的比形参数量多,那么是全部都会被传进去的,只不过没有对应的形参可以引用(但可以用 arguments 来获取剩下的参数)。
10.字符串
实质上是String对象 下面那些方法都是它的属性
(1) 反斜杠\ 是转义符
var answer="He is called \"Johnny\"";
(2)indexof()查找字符首次出现位置
var str="Hello world, welcome to the universe.";
var n=str.indexof("world"); // 从0开始数 n=6
(3)replace()替换字符
str="Please visit Microsoft!"
var n=str.replace("Microsoft","Runoob"); // n=Please visit Runoob!
(4) split() 分割字符串成数组
var str="i want to eat something";
var n=str.split(" "); //第一个参数是空格 即对原字符串以空格为依据进行分割。n= i,want,to,eat,something
n[0]=i
n[1]=want
n[2]=to
若是 var n=str.split(",") 即以逗号为依据进行分割,则 n=i want to eat something,相当于还没被分割,因为原字符串没有逗号
11.number数字
(1)NaN属性
isNaN()方法判断是否是数字,不是数字则返回真
一个数字除以一个字符串结果不是一个数字。一个数字除以一个字符串数字结果是一个数字
var x = 1000 / "Apple";
isNaN(x); // 返回 true
var y = 100 / "1000";
isNaN(y); // 返回 false
(2)数字对象
var x=123; // x是数字
var y= new Number(123); // y是对象
x==y返回false
12.数组array
所有数组也都是对象,是Array类的实例
(1)创建数组
(2)数组的prototype属性。可以为数组类新建属性和方法。下图新建了一个myUcase()方法
注意在新创建的方法内使用this,因为调用新方法的是实例化的数组对象n.push("xxx") //数组尾部添加xxx字符串
n.pop() //删除数组尾部一个元素 n.pop()返回的是被删除的最后一个元素,不是删除后的数组
n.shift()//删除数组第一个元素
n.join(",") //将数组变成字符串,默认分隔符为逗号。功能与str.split(',')相反
n.slice(1,3) //切片,返回数组。返回数组n的第2个和第3个元素组成的数组
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3); // citrus=[Orange,Lemon]
n.sort() //排序 默认从小到大。sort(sortby)接受形参sortby且必须是函数
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a}); //此时就是按从大到小排序
points.sort(function(a,b){return a-b}); //此时按从小到大排序
n.splice(index,howmany[,item1,itme2,....]) 用于删除和添加元素。返回的是被删除的元素组成的数组
var n=["apple","pear","berry"];
var p = n.splice(1,2,"water","gun"); //从第2个位置开始删除,删除2个元素。
//并从第2个位置开始插入元素 n=["apple","water","gun"] p=["pear","berry"]
n.toString 将数组转为字符串
n.unshift("xxx","xxxxx") //在数组开头插入xxx与xxxxx两个元素。
更多数组方法http://www.runoob.com/js/js-obj-array.html
13.对象——变量的容器、
调用对象属性: .property或["property"]
调用对象方法属性: .property()
javascript没有类 ,对象的模板是构造函数。JavaScript 是面向对象的语言,但 JavaScript 不使用类。在 JavaScript 中,不会创建类,也不会通过类来创建对象(就像在其他面向对象的语言中那样)。JavaScript 基于 prototype,而不是基于类的。JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。
http://www.runoob.com/js/js-objects.html
(1)创建对象。两种方法
a.直接创建对象实例
或用字面量创建
firstname,lastname,id是变量,john,Doe,5566是变量的值。所以说对象是变量的容器
b.使用对象构造器(构造函数)
this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)
(2)给对象构造器添加方法 。注意要先传递方法。但也可以用prototype。
//法一
function person(name){
this.name=name;
this.changeName=changeName; //这句一定要有。把方法传递给对象实例
function changeName(name){ this.name=name; }
}
//法二 用prototype
function person(name){
this.name=name;
person.prototype.changeName=function(name){ this.name=name;}
}
var man = new person("chen");
man.changName("rui");
(3)给对象实例创建方法
var person={
name:"chen",
fun:function (){
document.write(this.name)
}
}
person.fun(); //调用
(4)for..in..循环
var person={fname:"John",lname:"Doe",age:25};
for (x in person){
document.write(p[x]); // x="fname" , "Iname" , "Doe" 即x本身就是字符串 p.x将无法访问。第一次循环时 p[x]=p["fname"]
}
14.函数
(1)定义函数
a. function f(a,b){ return a*b; }
b. var x = function(a,b){ return a*b } ; //匿名函数是一句话 要加分号
var z = x(4,3);
(1)var x = "chen"与 x = "chen"
(2)函数内的return语句执行后就结束该函数的执行
(3)设计一个计算器
取得表单输入的值是用value 不是用innerHTML .且得到的是字符串形式的数字。要用Number()函数转为数字
(4)对多选框实现全选和取消全选
15.HTML标签中的属性也是js中对象的属性。
如<button id="test" onclick="function()">可以写成
var x=document.getElementById("test");
x.onclick=function();
16.运算符
17.Date()
var x = new Date();
x.getDay() // 显示星期。0-6分别是星期天至星期六
x.getHours()//
x.getMinutes//
x.getSeconds//
或者也可以这样写
var x = new Date().getHours() ;
18 . switch(){} 当没有break时。会执行剩下所有的case和default 内的语句而且不判断条件
19 .循环
(1)for循环中的一些细节
(2)for in循环用于对象和数组
下图中x是字符串 所以person["age"]=person[x]
下面是用于数组的
(3)break用于结束循环和switch。也可以 break xxx; 结束xxx代码块。(xxx是代码块的标签名)
continue只能用于循环中。
20. typeof
(1)
typeof "chen" //返回string
typeof 3.14 //返回number
typeof [1,2,3,4] //返回object ,数组是特殊的对象类型
(2)null与undefined
a. 何时使用null?
当使用完一个比较大的对象时,需要对其进行释放内存时,设置为 null。
null表示一个变量将来可能指向一个对象。一般用于主动释放指向对象的引用,例如:
var emps = ['ss','nn'];
emps = null; // 释放指向数组的引用
b.二者区别
null 表示一个空对象引用。undefined是一个没有设置值的变量。所以两者值相同,但类型不同。
var person=null //person类型为object
var person 或 var person = undefined //person类型为undefined
21.类型转换 String()全局函数与 .toString()属性
var x=123;
x.toString() 或 String(x) 将返回字符串即string类型的123 但x本身的类型不变,还是number
网友评论