JAVAScript 基本语法 笔记(一)

2020年03月06日

1、JAVA web
1.1 重定向

response.sendRedirect()
无法实现数据的传递,能够跨站点访问

1.2 请求转发

"request.getRequestDispatcher(’’/welcomeServelet’’).forWord(request,response)
能够实现数据的传递,不能实现跨站点访问

2、 JAVAScript

​ JAVAScript 语言基础

​ JAVAScript Dom 用途:来操作html 元素,制作一些网页效果


2.1、JAVAScript 语言基础 基础
2.1.1参考书:

JavaScript 高级程序设计 JavaScript权威指南

核心语法 ECMAScript ECMA 欧洲计算机制造商协会

DOM (文档对象模型)

BOM(浏览器对象模型)

2.1.2 javascript语法
//  通过连入外部的JS文件来进行改变,src可以是外部网站,不要自关闭及不要分开后面的script
<script src="scripts.js" type ="text/javascript"></script> 
<script type="text/javascript">  
     //JS中字符串推荐单引号 
     /* 说明性文字所用注释
     */
      alert('hello');    
      alert('new Date().toLocaleDateString()'+' '+ new Date().toLocaleTimeString());
     
 </script>

在Script中代码出错,只会影响当前Script,不会影响其他script及整个代码


js语言严格区分大小写(n和N是两个不同的变量)

声明变量统一用var来声明,不需要写数据类型

C#是强类型语言,JS是弱类型语言,支持动态类型。

//以下js代码都是正确的
var x=10;
x='aaaaa';
x=false;
x=99.5;

每条语句后面加上分号 “;”

变量命名以字母、下划线和 开 头 , 中 间 可 以 包 括 字 母 、 数 字 、 下 划 线 和 开头,中间可以包括字母、数字、下划线和 线

JS共六种数据类型:

  • Boolean (布尔) 取值:只有true和false
  • Number(数字) 取值:所有数字,包含整数和小数等,范围相当于double
  • String(字符串)取值:所有字符串
  • Undefined(未定义) 只有一个值是 undefined
  • Null (空对象) 只有一个值是null
  • Object (对象类型) 取值:任何对象、Array、function等
object o= null;
o = new object();
Console.WriteLine("OK");
var n =10;
alert(typeof(n)); //打印出来是number
var m;
alert(typeof(m)); // 打印出来是undefined

演示for循环、switch语句

<script type="text/javascript">  
    //int   变黑为保留字
  var sum;//所以声明变量后,使用前一定要赋值;
    sum=0; //动态数据类型   
    for(var i=1;i<=100;i++){
        sum=sum+i;
    }
    alert(sum);  //返回NaN,原因是sum未赋初值,sum就是undefined
  
    
     
 </script>

“====” 和“ =====”

=== 三等号为严格等于 数据类型和值,不作数据类型转换

== 双等号 数据类型转换之后的值相等会返回true

<script type="text/javascript">  
    var	n1='123';
    var n2= 123;
    alert(n1==n2); //true
    alert(n1===n2);//false
    var n1= null;
    var n2;
    alert(n1==n2); //当使用双等号== 判断的时候,认为null和undefined相同true
    alert(n1===n2);//false
    var n1=true;
    var n2='true';
    alert(n1==n2); //false
    alert(n1===n2); //false
    //详见ECMA-262.pdf语法
     var s=123;
    //switch 内部使用的也是=== 严格等于来判断是否相等的
    switch(s){
        case '123':
            alert('等于字符串123');
            break;
        case 123:
            alert('等于数字123');
            break;
        default:
            alert('没有找到相等的');
            break;
    }
    //返回结果是  等于数字123.
 </script>

null 和 undefined

  • 当声明变量为赋值时,那么变量的值就是undefined
  • 变量压根就没有声明,例如 alert(w),浏览器报错,整个代码不执行,在使用变量之前先校验变量是否可用
if(typeof(w) =='undefined'){
 alert('变量不可用')
}else{
alert(w)
}
//返回结果为变量不可用
  • 方法没有返回值的时候,接收到的返回值就是undefined

    var n = fun1()
    alert(n); //返回undefined
    function fun1(){
    }
    

null 值表示指向了一个“空对象”,需要我们显示为n赋值一个null值

一般在一个对象使用完毕,

var n =null;

无论变量的值是null值,还是undefined都表示该变量不可以用,所以在变量使用前进行变量校验,判断变量是否可用。

var x ; //var x
if (typeof(x)!='undefined' && x !=null){
    alert('x变量可用')
}else{
    alert('x变量不可用')
}
//返回结果: x变量不可用

变量作用域: JS中不存在块级作用范围

在页面中声明的变量,在整个页面中任何一个地方都可以访问。

//eg1:
var n=10;
alert(n);   //返回10
<script type ="text/javascript">
    n++;
   alert(n);   //返回11
    </script>

//eg2:
var x =100;
function f1(){
    x++;
    alert(x);//返回101
}
f1();
alert(x);//返回101
//eg3:
var y=100;
function f1(){
    //x 是f1 内部定义的变量,只能在f1函数内部使用
    var x=1;
    x++;
    alert(x); //返回2
}
f1();
alert(x); //返回错误, x 未定义

//eg4:
 function f1(){
     //在js中不存在块级作用域,所以在方法内部任何一个地方声明变量,变量在整个方法内部有效
     var x=10;
     if(x>5){
         var y=100
         alert(y);//打印100
     }
     alert(y);//打印100,
 }
f1();
alert(y);//报错,y未定义


//eg5:
function f1(){
    var sum=0;
    for(var i=0;i<10;i++){
        sum=sum+i
    }
    alert(i); //打印10
    //当重复声明变量的时候,JS会自动忽略第议次声明以后的所有语句,但是不忽略第二次赋值语句
    for(var i=0;i<5;i++){
        alert(i); //不打印出来,可以不用var定义
    }
    alert(i);//打印5
}
f1();

//eg6:  不使用var关键字则认为X是在整个页面中声明的,相当于全局变量,整个页面都能访问,所以要避免使用“全局变量”

function f1(){
    x =100;
    x++;
    alert(x);//101
}
alert(x);//101

转义符号: \t \n \r \ \等

数据类型转换

// 1、把字符串转换为数字
var n='123';
alert(n+1);//打印1231
var n='123sdasdsad'
 n=parseInt(n);
alert(n+1)// 打印124
var n='12ss3dasdsad'
 n=parseInt(n);
alert(n+1)// 打印13
var n='sss123sdasdsad'
 n=parseInt(n);
alert(n+1)// 打印NaN,Not a Number ,NaN 是一个值,数据类型是Number

var n='15';
n=parseInt(n,10);
alert(n);//15
var n='15'
n=parseInt(n,8); //把n中的15当成八进制来转换,转换为十进制来返回
alert(n);//13

//
alert(parseFloat('99.3'))//转换为小数  99.3
alert(parseFloat('9P9999.3.3.3'));//打印为9

Number(object);//将任意类型转换为数字   null==> 0    object==> NaN
String(object);//将任意类型转换为字符串
对象.toString();//将任意类型转换为字符串
Bealean(object);//将任意类型转换为Boolean

n= null;
alert(n.toString());//null对象不能调用任何方法,报错

判断一个值是不是NaN,不能用==,必须使用isNaN()函数来校验

JAVA中eval()函数方法

var n ='var x=1;x++;alert(x);';
alert(n);//打印:var x=1;x++;alert(x);
eval(n);  //打印2,把字符串当做js代码来解析执行
x++;  
alert(x);//打印3
var n=10,m=1100;
alert(n<m && m>n);//true
//逻辑表达式,很重要
var r ="a" || "";
alert(r); // 打印a
r= null || 15
alert(r);//打印15
r="a" && 0;
alert(r);//打印0
r=null && 15;
alert(r);//打印null
r ="12312" || 12;
alert(r);//打印 12312
r="12312" && 12
alert(r);//12  返回最后一个结果

**逻辑表达式很重要 ** && 和 ||

错误调试 http://getfirebug.com

2.1.3 javascript函数

js 没有访问修饰符,没有返回值数据类型

function 相当于delegate ,js函数习惯用驼峰命名法

定义函数的注意点:

  • 使用function关键字
  • 无返回值类型
  • 无参数的类型
  • javascript中函数永远有返回值,如果没有执行return语句,则返回undefined,把函数当做构造函数时,return语句将不返回
//eg1:
function getMessage(id){
    return id+':hello';
}
var msg=getMessage('0001');
alert(msg); //输出0001:hello

//eg2:
function sayHi(){
    alert('Hi!')
}
sayHi();//调用一个函数
//eg3:
function getSum(x,y){
    return x+y;
}
var result=getSum(50,20)alert(result);  

js函数不能重载:

方法的签名指的是方法的名称和参数,及黑体部分 public string sayHi(string s)

function f1(){
    alert('first f1');
}
function f1(name){
    alert(name);
}
f1();// 打印 undefined,因js没有重载,用最后面的覆盖前面的函数定义,因为那么没有赋值
add(10,20);
add(10,20,30);
add(10,20,30,40);//类似于可变参数,在js中叫做arguments
//其实所有的方法都无需定义形参,定义形参的目的仅仅是为了使用方便
//在实际调用函数的时候,所有的参数都包含在了arguments对象中
function add(){
    var sum=0;
    for(var i=0;i<arguments.length;i++){
        sum+=arguments[i]
    }
    return sum;
}
var result=add(10,20,30,40);
alert(result);//打印100
 var x=1,y=0,z=0;
function add(n){
    n=n+1;
    return n;
}
y=add(x);//因为函数有“预解析”功能,程序在执行之前需要进行函数预解析,范围在一个标签之内,不能在整个页面中
function add(n){
    n=n+3;
    return n;
}
z=add(x);
alert(y+'....'+z);//打印4.....4
var user_name='steve';
function f1(){
    //重名时优先使用内部变量
    //1、在函数内部声明的变量整个函数都可以使用
    //2、如果遇到局部变量与全局变量冲突的情况下,优先使用局部变量
    //3、变量与函数具有同样的预解析功能,在函数的代码正式执行之前,先会解析函数中的所有的变量,然后在执行该函数,因为第一句代码,局部变量user_name已经声明了,但是没有赋值(因为预解析只解析声明,不包含赋值)所以就会返回undefined 
    alert(user_name); //undefined
    var user_name ='yzk';
     alert(user_name);//yzk
}
f1()
alert(user_name);//steve
 function myFunction(){
     var n =10,m,sum;//在函数的一开始就要把所有要使用的变量都声明好
     alert(n);
     m=n++;
     alert(m);
     sum=n+m;
     alert(sum);
 }

JavaScript “函数”也是“对象”

function myFunction(){
    for(var i=0;i<10;i++){
        alert(i);
    }
}
//把myFunction当做函数来调用
myFunction();
//同时myFunction 也是一个对象(是一个函数对象)
alert(myFunction.toString());//返回方法的源代码
alert(myFuction.length);//返回函数定义形参的个数

JavaScript中的匿名函数

//声明匿名函数
//一、匿名函数的第一种写法
var f1=function (){
    alert('这就是一个匿名函数!!!');
};//定义一个匿名函数
f1();//打印:这就是一个匿名函数!!!
f1=100;
alert(f1);//打印100
f1=function(x,y){
    return x+y;
}
var r=f1(10,20)
alert(r);//30
function f1(fn){
    alert('这是一个f1函数')fn();
}
f1(f12);
function f12(){
    alert('12'); 
}

//等价于 
f1(function (){alert('直接传递一个匿名函数');});
//二、匿名函数的第二种写法:定义匿名函数的同时直接调用该函数
(function (x,y){alert(x+y);})(10,50);
//好处是限定了变量的作用域范围
//第三种匿名函数的写法
var f1 = new Function('x','y','z','alert(x+y+z);');
//通过new Function()的方式定义匿名函数,可以将函数代码用字符串来表示,同时在函数中使用的变量,不会作为页面的"全局变量"出现,在函数外部也访问不到,不像eval()一样。
var f1 = new Function('x,y,z','alert(x+y+z);');
f1(10,20,30);

数组的声明

//eg1:声明数组的同时初始化
var  numbers =[1,2,3,4,5];
alert(numbers.length);//数组长度是5
for(var i=0;i<numbers.length;i++){
    alert(numbers[i]);
}
//当调用数组对象的toString()方法的时候,会返回一个字符串,该字符串是以“逗号”隔开的每个数组元素组成的
alert(numbers.toString());//1,2,3,4,5


//eg2:声明一个空数组
 var data=[];
alert(data.length);//打印:0
data[0] =12;
data[1]= 120;
alert(data.length);//打印:2
//数组增加数值
 var data=[];
data[data.length]='a';
data[data.length]='b';
data[data.length]='c';

//将1至50的所有偶数存入data数组中
var data=[];
for(var i=1;i<=50;i++){
    if(i%2==0){
        data[data.length]=i;
    }
}
alert(data.toString());打印:2,4,6,8……50
    


var data=[];
date[5]='A';
data[10]=true;
data[20]=55.5;//数组的长度为21
data.length=3;// 数组的长度为3,类型都变为undefined

数组的其他声明方式

var arr = new Array();
alert(arr.length);//0 声明一个长度为0的数组

var arr = new Array(5);
alert(arr.length);//5 声明一个长度为5的数组

var arr = new Array(1,2,'hello',false,function(){alert('hello');});
alert(arr.length);//5
2.2 JAVAScript Dom
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值