<script language="javascript">document.write("hello");</script>2)在js中,直接编写,在html中,使用一对script标记直接引用
<script language="javascript" src="demo01.js"></script>以上两种不能在一对script标记中重复使用,引用就不能写文件内容。
<script>document.write(‘<table></table>");</script>每行写一条脚本语句
<script language="javascript">//使用js描述一个人的完整信息var name="张三";var age=30;var marry=true;var height=1.8;document.write("<ol>");document.write("<li>姓名"+name+"</li>");document.write("<li>年龄"+age+"</li>");document.write("<li>婚否"+marry+"</li>");document.write("<li>身高"+height+"</li>");document.write("</ol>");function Person(){}var p1=new Person();p1.name="李四";p1.age=20;2013/12/31document.write(p1.name+"<br>");document.write(p1.age+"<br>");</script>5、运算符 <script>var i=10;var j=i++; //先赋值再自加var k=++i; //先自加再赋值document.write(j); //10document.write(k); //12</script>2)比较运算符
<script>var i=5;//Numbervar j="5"; //Stringif(i==j){document.write("相等");}if(i===j){document.write("全等于");}</script>3)逻辑运算符 <script language="javascript">var n=Math.round(Math.random()*500);// 随机数alert(n);while(true){var number=prompt("请输入一个0--500之间的数字"); //用户输入if(number>n) alert("大了");if(number<n) alert("小了");if(number==n){alert("答对了~~~~");break;}}</script> 四、函数 //函数的定义function display(){alert("hello");}//函数的调用display();display();display();例2:关于函数的参数问题
在上题中,first,second是形参,i,j是实参
在函数执行过程,形参值的改变不会影响实参
按值传递
按地址传递原理图:

在js中,对象类型默认就是按地址传递
function display(obj){obj.name="lisi";}var p1=new Object();p1.name="zhangsan";display(p1);alert(p1.name);//lisialert(p1);JS的基本类型,是按值传递的。
var a = 1;function foo(x) {x = 2;}foo(a);console.log(a); // 仍为1, 未受x = 2赋值所影响再来看对象:var obj = {x : 1};function foo(o) {o.x = 3;}foo(obj);console.log(obj.x); // 3, 被修改了!说明o和obj是同一个对象,o不是obj的副本。所以不是按值传递。 但这样是否说明JS的对象是按引用传递的呢?我们再看下面的例子:var obj = {x : 1};function foo(o) {o = 100;}foo(obj);console.log(obj.x); // 仍然是1, obj并未被修改为100.如果是按引用传递,修改形参o的值,应该影响到实参才对。但这里修改o的值并未影响obj。 因此JS中的对象并不是按引用传递。那么究竟对象的值在JS中如何传递的呢? var str = "abc";str[0]; // "a"str[0] = "d";str; // 仍然是"abc";赋值是无效的。没有任何办法修改字符串的内容而对象就不一样了,对象是可变的。
var obj = {x : 1};obj.x = 100;var o = obj;o.x = 1;obj.x; // 1, 被修改o = true;obj.x; // 1, 不会因o = true改变这里定义变量obj,值是object,然后设置obj.x属性的值为100。而后定义另一个变量o,值仍然是这个object对象,此时obj和o两个变量的值指向同一个对象(共享同一个对象的引用)。所以修改对象的内容,对obj和o都有影响。但对象并非按引用传递,通过o = true修改了o的值,不会影响obj。 function display(first,second){//函数遇到return会立即返回,后面代码不执行return first+second;}var i=10;var j=20;alert(display(i,j));document.write(display(i,j));*/例4:关于匿名函数 /*var i=function(){alert("hello");};i();*/Var i=10; 变量可以保存数据,也可以保存地址Function display(){ } 在window对象下添加一个叫display的变量,它指向了这个函数的首地址 Window.i=display 我们让window对象下的i指向这个函数的首地址 display() ======= i();例5:自调用匿名函数<script language="javascript">/*var i=function(){alert("hello");};i();*/(function(first){alert(first);alert("hello,js");})(10)</script>Function(){} :相当于返回首地址 (Function(){}) :把这部分看做一个整体 (function(){})():相当于找到这个地址并执行以上这种写法:可以避免代码库中的函数有重命问题,并且以上代码只会在运行时执行一次,一般用做初始化工作。 <script>function display(){//var i=20; //局部变量只在局部作用域起作用i=20;//全局的,会将全局i的值修改为20}display();alert(i);</script>在函数内部定义的就是局部的,否则就是全局的 <script>var i=10;function fn1(){var i=100;function fn2(){i=1000;function fn3(){i=10000;}fn3();console.log(i);//10000}fn2();console.log(i);//10000}fn1();console.log(i);//10</script>
局部访问全局使用作用域链
全局访问局部可以使用(函数)闭包进行模拟.
五、arugments的使用
在一个函数内部,可以使用arguments属性,它表示函数的的形参列表,它是以数组形式体现的
例1:在定义display函数时,它的实参个数必须要与形参个数保持一致,有时,我们定义函数时,形参数目不能固定,如何解决?
<script>function display(){//没有定义形参,那么所有形参会自动存放到arguments这个属性数组中for(var i=0;i<arguments.length;i++){document.write(arguments[i]+"<br>");}}display("lisi","zhangsan","wangwu");//三个实参display("zhangsan","lisi","wangwu","xiaoqiang","wangcai"); //五个实参</script>如果定义时,参数个数不确定,可以通过arguments来保存所有实参<script>function display(){var sum=0; //总额for(var i=0;i<arguments.length;i++){sum+=arguments[i];}document.write(sum+"<br>");}//A公司display(10000,2000,5000);//B公司display(1000,2000,5000,8000,10000);</script>以上就是javascript教程的全部内容,希望对大家的学习有所帮助。