码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript的基础篇

时间:2018-08-03 14:10:48      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:返回值   方法   大于   小数点   exp   argument   技术   out   符号   

一、JavaScript的引入方式

<body>
<!--引入方式一,直接编写-->
    <script>
        alert("hello world");
    </script>
<!--引入方式二,导入文件-->
    <script src="hello.js"></script>
</body>

说明:alert为打印的意思,访问页面,弹出框,打印输出的内容

二、JavaScript的变量

1)声明变量时不用声明变量类型. 全都使用var关键字;

<body>
    <script>
        var a;
        var b=2;
        alert(a);   // undefined
        alert(b);   // 2
    </script>
</body>

2)一行可以声明多个变量,并且可以是不同类型

<body>
<script>
var name="user", age=20, job="运维工程师";
alert(name)
alert(age)
alert(job)
</script>
</body>

3 (了解) 声明变量时 可以不用var. 如果不用var 那么它是全局变量.

4 变量命名,首字符只能是字母,下划线,$美元符 三选一,且区分大小写,x与X是两个变量)))

5 )变量还应遵守以下某条著名的命名规则:

Camel 标记法
首字母是小写的,接下来的字母都以大写字符开头。例如:
var myTestValue = 0, mySecondValue = "hi";
Pascal 标记法
首字母是大写的,接下来的字母都以大写字符开头。例如:
Var MyTestValue = 0, MySecondValue = "hi";
建议用匈牙利类型标记法
在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i 表示整数,s 表示字符串,如下所示“
Var iMyTestValue = 0, sMySecondValue = "hi";

6)JavaScript语言编写的基础规范

  每行结束可以不加分号. 没有分号会以换行符作为每行的结束

  注释 支持多行注释和单行注释. /* */  //

复制代码
a=1;b=2;
a=1 b=2;------错误

a=1
b=2

//推荐
a=1;
b=2;

{
 a=1;
 b=2;
    //推荐加tab
    a=1;
    b=2;
}

7)变量定义的本质

var s="hello"
var s2=new String("hello2")     //本质
alert(s)
alert(s2)

 三、JavaScript的数据类型

技术分享图片

 

1)数字类型(Number)

简介
最基本的数据类型
不区分整型数值和浮点型数值
所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式
能表示的最大值是±1.7976931348623157 x 10308 
能表示的最小值是±5 x 10 -324 
   整数:
           在JavaScript中10进制的整数由数字的序列组成
           精确表达的范围是?-9007199254740992 (-253) 到 9007199254740992 (253)
           超出范围的整数,精确度将受影响
  浮点数:
           使用小数点记录数据
           例如:3.45.6
           使用指数记录数据
           例如:4.3e23 = 4.3 x 1023

  16进制和8进制数的表达
           16进制数据前面加上0x,八进制前面加0
           16进制数是由0-9,A-F等16个字符组成
           8进制数由0-7等8个数字组成
           16进制和8进制与2进制的换算
# 2进制: 1111 0011 1101 0100   <-----> 16进制:0xF3D4 <-----> 10进制:62420
# 2进制: 1 111 001 111 010 100 <-----> 8进制:0171724

2)字符串(String)

简介
是由Unicode字符、数字、标点符号组成的序列
字符串常量首尾由单引号或双引号括起
JavaScript中没有字符类型
常用特殊字符在字符串中的表达
字符串中部分特殊字符必须加上右划线常用的转义字符 \n:换行  \:单引号   \":双引号  \\:右划线

  String数据类型的使用

  特殊字符的使用方法和效果

  Unicode的插入方法

<script>
    var str="\u4f60\u597d\n欢迎来到\"JavaScript世界\"";
    alert(str);
</script>
// 你好
// 欢迎来到JavaScript世界

3)布尔型(Boolean)

简介
Boolean类型仅有两个值:true和false,也代表1和0,实际运算中true=1,false=0
布尔值也可以看作on/off、yes/no、1/0对应true/false
Boolean值主要用于JavaScript的控制语句,例如
    if (x==1){
    y=y+1;
    }else    {
    y=y-1;
    }

4)Null & Underfined

Undefined 类型
Undefined 类型只有一个值,即 undefined。当声明的变量未初始化时,该变量的默认值是 undefined。
当函数无明确返回值时,返回的也是值 "undefined";

Null 类型
另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。
如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 nullvar person=new Person() var person=null

、JavaScript的函数

 1)函数的创建方式一


function 函数名 (参数){
?函数体;
return 返回值;
}
//another way:
var 函数名 = new Function("参数1","参数n","function_body");
//============================================================
function func1() {
    alert(123);
}
func1()  // 调用函数
function func2() {
    alert(123);
    return 8;
}
var ret=func2()
alert(ret)            

2)函数创建方式二

// var func2=new Function("参数1","参数2","函数体")
var add=new Function("a","b","alert(a+b)");
add(1,2);   //3

3) 函数创建方式三

function add() {
    alert(arguments.length)        // 5
    console.log(arguments.length)
    console.log(arguments)      //网页审查代码,Console
}
add(1,2,3,4,5)

4)匿名函数

var func4=function () {
    alert(123)
}
func4()

5)自执行函数

(function(arg){
    console.log(arg);
})(123)   //网页审查代码,Console

6)异常处理

try {
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}

7)嵌套函数

var city = beijing;
function func(){
    var city = shanghai;
    function inner(){
        var city = shenzhen;
        console.log(city);
    }
    inner();
}
func(); // shenzhen
var city = beijing;
function Bar(){
    console.log(city);
}
function func(){

    var city = shanghai;
    return Bar;
}
var ret = func();
ret();    //beijing

8)闭包,思考题

var city = beijing;
function func(){
    var city = "shanghai";
    function inner(){
        console.log(city);
    }
    return inner;
}
var ret = func();
ret();  // 单独shanghai

//=================================
var city = beijing;
function Bar(){
    console.log(city);
}
function func(){
    var city = shanghai;
    return Bar;
}
var ret = func();
ret();    //单独beijing
// 但是 组合的实际结果 beijingbeijing

五、函数的控制语句

1)if语句

//针对2种可能性
var week="Sunday"
if (week=="Sunday"){
    alert("8")
}else{
    alert("not 8")
}
//针对多种可能性
var week="周六"
if (week=="Sunday"){
    alert("7")
}else if(week=="周六") {
    alert(" 6")
}else{
    alert("not 6 7")
}

2)switch,case语句

var x=3;
switch (x){
    case 1:y="星期一";     break;
    case 2:y="星期二";     break;
    case 3:y="星期三";     break;
    case 4:y="星期四";     break;
    case 5:y="星期五";     break;
    default: y="未定义";
}
alert(y)

3)for 循环语句

var a=[100,"hello",true]
for (var i in a){
    console.log(i)
    console.log(a[i])
}   //网页审查元素,Console
for (var i=1;i<10;i=i+1){
    console.log(i)
}   //网页审查代码,Console

obj={"11":"111","22":[1,2]}
alert(typeof(obj));      //    object
alert(obj);               // [object Object]
for (var i in obj){
    console.log(i);
    console.log(obj[i]);
}       //网页审查元素,Console

var ret=0
function add() {
console.log(arguments.length)
console.log(arguments)
for (var i in arguments){
ret+=arguments[i]
}
return ret
}
var ret=0;
for (var i=1;i<101;i=i+1){
    ret+=i;
}
alert(ret)  // 5050
// 字符串的拼接,拼接成html的标签
// <h1>hello<br></h1>
for (var i=1;i<=6;i++){
    document.write("<H"+i+">hello</H "+i+"> ");
    document.write("<br>");
}

for循环的特殊例子

 for (var i=1; i<=9; i++) {
     setTimeout( function timer(){
     console.log( i );
     },1000 );
 }
// 结果是9 个 10 ===》因为for循环之前先执行了i++。由于执行速度很快,再执行后面的代码。此时i=10。再执行的for循环

4)while语句

var i=1;
while (i<=6){
    document.write("<H"+i+">hello</H "+i+"> ");
    document.write("<br>");
    i++;
}

、JavaScript的数据类型转换

1)基本类型转换

JavaScript属于松散类型的程序语言
变量在声明的时候并不需要指定数据类型
变量只有在赋值的时候才会确定数据类型
表达式中包含不同类型数据则在计算过程中会强制进行类别转换

数字 + 字符串:数字转换为字符串
数字 + 布尔值:true转换为1,false转换为0
字符串 + 布尔值:布尔值转换为字符串true或false

 2)强制类型转换函数

函数parseInt:   强制转换成整数   例如parseInt("6.12")=6  ; parseInt(“12a")=12 ; parseInt(“a12")=NaN  ;parseInt(“1a2")=1

函数parseFloat: 强制转换成浮点数  parseFloat("6.12")=6.12

函数eval:       将字符串强制转换为表达式并返回结果 eval("1+1")=2 ; eval("1<2")=true

、JavaScript的类型查询函数

  ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型:

  如果它是原始类型,还可以判断它表示哪种原始类型

函数typeof :查询数值当前类型? (string / number / boolean / object )

例如typeof("test"+3)      "string"
例如typeof(null)          "object "
例如typeof(true+1)        "number"
例如typeof(true-false)    "number"

八、ECMAScipt 运算符

加(+)、 减(-)、 乘(*) 、除(/) 、余数(% )  加、减、乘、除、余数和数学中的运算方法一样  例如:9/2=4.54*5=209%2=1

-除了可以表示减号还可以表示负号  例如:x=-y

+除了可以表示加法运算还可以用于字符串的连接  例如:"abc"+"def"="abcdef"

1)举例说明: a++ 和 ++a的区别

var a=1;
var b = a++;   //先赋值后加减 a+=1   ===》先让 b=a ,,即b=1。。在a+=1,,即a=2
alert(a)      // 2
alert(b)      // 1
var b= ++a    // 先加减后赋值。。。===》因为a=2,先++a,,所有a=3,,再b=a,所有b=3
alert(a)      // 3
alert(b)      // 3
var x=1;
alert(x++);     //1     ====》首先输入x,即打印出来了1,,但是又执行了x=x+1,让x=2了,成为了下一步执行的条件
alert(++x)      //3     ====》先执行了x=x+1,x=3,输出了3。x=3也成为了下一步执行的条件
alert(--x)      //2     ====》同理,x=2,成为了下一步的执行条件
alert(x--)      //2     ====》因为x=2,先输入了x=2.。但是执行了x=x-1,即x=1,成为了下一步的条件
alert(x)        // 1

2、基于if语句的逻辑运算

var w=1;
if(w<10 && w>0){
    ++w;
    alert(w)
}
//    2
if (null && true){
    alert(1);     //不出结果,说明为假
}
if (new Object()){
    alert(1)
}

3)逻辑运算符

等于 ( == )  、不等于( != ) 、 大于( > ) 、 小于( < ) ?大于等于(>=) 、小于等于(<=)
与 (&&) 、或(||) 、非(!)
1 && 1 = 1  1 || 1 = 1
1 && 0 = 0  1 || 0 = 1
0 && 0 = 0  0 || 0 = 0

!0=1
!1=0

逻辑 AND 运算符(&&)

逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。

如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:

  • 如果某个运算数是 null,返回 null。 
  • 如果某个运算数是 NaN,返回 NaN。 
  • 如果某个运算数是 undefined,返回undefined。 

逻辑 OR 运算符(||)

与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值

4)二进制位移运算

//3<<2
//00000011    ===>3
//00001100    ===>12
//12>>1
//00001100    ===>12
//00000110    ===>6
alert(3<<2);     // 12
alert(12>>1)     // 6

5)一元加减法

    var a=1;
    var b=1;
    a=-a;  //a=-1

    var c="10";
    alert(typeof (c));
    c=+c;    //类型转换
    alert(typeof (c));
//    -------------------
    var d="yuan";
    d=+d;
    alert(d);//NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
    alert(typeof(d));//Number

    //NaN特点:
    
    var n=NaN;
    
    alert(n>3);
    alert(n<3);
    alert(n==3);
    alert(n==NaN);
    
    alert(n!=NaN);//NaN参与的所有的运算都是false,除了!=

6)赋值运算符

赋值 = 
JavaScript中=代表赋值,两个等号==表示判断是否相等
例如,x=1表示给x赋值为1
if (x==1){...}程序表示当x与1相等时
if(x==“on”){…}程序表示当x与“on”相等时
 配合其他运算符形成的简化表达式
例如i+=1相当于i=i+1,x&=y相当于x=x&y

举例说明

2 == “22 === “24 != “44 !== “4var a = 2; var b = 4;
var c = a<b | --b>--a;
var c = a<b || --b>--a; 
var c = a<b &&--b>--a;
var c = a<b & --b>--a; 

7)等性运算符

执行类型转换的规则如下:

  • 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。 
  • 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。 
  • 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。 
  • 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。 

在比较时,该运算符还遵守下列规则:

  • 值 null 和 undefined 相等。 
  • 在检查相等性时,不能把 null 和 undefined 转换成其他值。 
  • 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。 
  • 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。 

技术分享图片

8)关系运算符,比较运算符(重要)

 a、字符串比较

var bResult = "Blue" < "alpha";
alert(bResult); //输出 true 

// 字符串 "Blue" 小于 "alpha",因为字母 B 的字符代码是 66,字母 a 的字符代码是 97。

 b、字符串的数字比较

var bResult = "25" < "3";
alert(bResult); //输出 "true"

// 这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。

 c、字符串的数字与数字比较

var bResult = "25" < 3;
alert(bResult); //输出 "false"
        
// 当有一个数字时,字符串 "25" 将被强制转换成数字 25,然后与数字 3 进行比较

小结:

 1、比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.

 2、比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
 9)特殊的算术运算
Math.abs(-10);        // => 10:绝对值
Math.ceil(0.6);       // => 1.0:向上取整数
Math.floor(0.6);       // => 向下取整数
Math.round(0.6);       // =>:1.0:四舍五入
Math.random();         // => 0-1随机数
Math.max(1, 3, 5);     // => 返回最高值
Math.min(1, -3, 50);   // => 返回最低值
Math.pow(2, 3);        // => 8:2的3次方
Math.PI;             // => π:圆周率
Math.sin(3);           // => 3的正弦值
Math.sqrt(30);        // => 平方根
Math.tan(100);        // => 正切
Math.acos(10);        // => 反余弦值
Math.cos(100);        // => 余弦值
Math.exp(100);        // => e的100次幂

九、字符串的截取

 1)string的slice()用法,提取字符串的一部分,返回一个新字符,不改变原来字符串(和array.slice用法一致)。

var str1 = "hello world";
str1.slice(1, 4);   // "ell":截取下标1到下标4,不包含最后一位
str1.slice(1);      //"ello world":截取下标1以后的所有字符
str1.slice(-3);    //"rld":截取后三位
// 需要加 alert 才能看到输出结果

 2)substr

var str1="hello world";
alert(str1.length);         // 11
alert(str1.substr(1,5));    // ello

 a、自动创建字符串对象:

    var str1="hello world"; // 调用字符串对象属性或方法时自动创建对象,用完就丢弃

 b、手工创建字符串对象

    var str1= new String("hello word");  // 采用new 创建字符串对象 str1,全局有效

 3)substr 和 substring的区分

//x代表字符串对象
//start表示开始位置
//length表示截取长度
//end是结束位置加1
//第一个字符位置为0
//x.substr(start, length)
//x.substring(start, end)

var str1="abcdefgh";
var str2=str1.substr(2,4);
var str3=str1.substring(2,4);
alert(str2);  // cdef
alert(str3);  // cd

 4)slice方法截取

var str1="abcdefgh";
var str1="abcdefgh";
var str2=str1.slice(2,4);
var str3=str1.slice(4);
var str4=str1.slice(2,-1);
var str5=str1.slice(-3,-1);
alert(str2);    // cd
alert(str3);    // efgh
alert(str4);    // cdefg
alert(str5);    // fg

十、字符串的其他操作(替换,分割,连接)

 1)替换字符串

//x.replace(findstr,tostr)

var str1="abcdefgh";
var str2=str1.replace("cd","aaa");
alert(str2);    //结果为"abaaaefgh"

 2)分割字符串

var str1="一,二,三,四,五,六,日"; 
var strArray=str1.split(",");
alert(strArray[1]);    //结果为"二"

 3)连接字符串

//x代表字符串对象
//y=x.concat(addstr)
//addstr为添加字符串
//返回x+addstr字符串
var str1="abcd";
var str2=str1.concat("efgh");
alert(str2);    //结果为"abcdefgh"

 

 

JavaScript的基础篇

标签:返回值   方法   大于   小数点   exp   argument   技术   out   符号   

原文地址:https://www.cnblogs.com/linu/p/8397735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!