01——Js基本语法 变量作用域 匿名函数

来源:互联网 发布:怎样将软件汉化 编辑:程序博客网 时间:2024/04/28 17:25

了解js

1Js是基于对象和事件的脚本语言,组要运用于客户端,由浏览器来执行js代码

2)可以与用户执行信息交互

3)安全性,不允许访问本地磁盘

4)跨平台

5)是一种编程语言,所以有编程语言的基本特性比如数据类型,变量,语句,函数,数组,对象,表现形式与C#不一样

6Js也是C语言,所以语法与C,java,c#非常类似,


在网页中如何使用Js

方式一,直接在页面中嵌入js代码

<script type=”text/javascript”>

 Alert(new Data().toLocaleTimeString());//显示当前时间

</script>

方式二,导入外部js文件

<script src=”test.js” type=”text/javascript”></script>//必须这样写,但不可以直接<script/>


Js中一些注意的地方

1 javascript代码,网页代码是从上到下依次执行的

2如果一个<script>快中的代码有语法错误,则整个该script快的代码都不会执行了

3.在js中声明变量不需要写数据类型,统一用var来声明。没有显示数据类型,生命变量都用varvariable缩写)关键字,不存在int n =10; string s=”s”;的情况

4.javascript是弱类型语言,支持动态类型 var n=10; n =”a”;//正确

5,每条语句都用”  ;  ”来结尾(不是必须,建议加上)

6js中的注释:当行用//多行用/*   */

7,变量命名规则,以字母,下划线,或$开头,中间可包含字母数字下划线或$

8,js不能动态提示

javascript中定义字符串推荐使用单引号,也可以使用双引号


JavaScript中的类型(共6种)

1,  Boolean(布尔),取值只有truefalse

2,  Number(数字)取值:所有数字,包含整数小数等,范围相当于double

3,  String(字符串)取值:所有字符串

4,  Undefined(未定义),取值只有一个:undefined

5,  Null(空对象)取值只有一个null

6,  Object(对象类型)取值:任何对象,Array,function等等

以上6总数据类型除了Object外其他都是基本类型,Object是引用类型

使用typeof运算符(求数据类型)返回一个表达式的数据类型的字符串表示形式


相对运算符: ==、(!=)的一些要点

         1;运算符两边类型相同,直接比较

           2;运算符两边类型不同,试图将两边==的运算符转换为string,bollean,number这些类型的数据类型然后再判断

           3==认为nullundefinednullnull,undifinedundefined是相等的

完全相等运算符(恒等于运算符): ===,(!==:必须两边类型相同,值相同返回true

1)undefined==undefined(true)

2)null==null(true)

3)NaN==NaN(false)

4)Null=undefined(true)

5)如果==两边都是字符串类型,那么必须字符串完全相同才会返回true

6)如果==两边的两个变量指向同一个对象,返回true

7)如果==两边一个是字符串类型,一个是数字类型,js引擎会尝试吧字符类型转换为数字类型再比较

8)如果==两边一个是布尔类型,一个是数字类型,则会尝试吧其中的布尔类型转换为数字类型再比较

9)如果==两边其中一个是string或者number类型,而另外一个是object类型,判断之前会将object类型转换为stringnumber类型然后再比较


Undefined的意义

Undefined值,undefined表示一种位置状态:

1)  声明变量未赋值,变量的值为undefined

2)  方法没有return语句返回值,返回undefined

3)  为声明的变量,通过typeof检测的变量时,返回“undefined”字符串

4)  访问不存在的属性时返回undefined

5)  Null表示一个有意义的值,表示“无值”或“无对象”,此时变量的状态为“已知状态”及null,可以设置对象名为null值,来释放对对象的引用来收回内存

6)  true转换为数字为1,把null转换为数字为0,把undefined转换为数字为NaN


判断变量是否可用最简单方法

var x;

if(x){//此处if在判断前,会先将x转换为Boolean值,其中null,undefined,“”,0都认为是false。当变量未声明时,这种写法会报错

//变量可用

}else{

         //变量不用

}

var x;

if (typeof (x) != 'undefined' && x != null) {alert('x可用'); } else {alert('x不可用');}


JavaScrip变量的作用域

1) 在页面上直接声明的变量即为“全局变量”,此处的全局变量意思是说破坏整个当前页面中都能访问的变量
1)  全局变量默认都是属于window对象的成员
2。全局变量直到页面关闭或流浪器关闭才释放资源
3.全局变量在页面的每个<script>块中能访问
4.全局变量容易引起命名冲突

2) 在函数内部声明的变量作用于范围为当前函数内部所以在方法内部任何一个地方声明的变量,都是在整个方法内心部有效,再次声明会自动自动忽略第二次声明

3) Js中没有块级作用域范围,

4) 声明变量可以使用var,也可以不用var。不用var声明的是全局变量

5) Js中声明变量是,一定要使用var,并且不推荐使用全局变量


转义字符

JavaScript中字符串同样需要转义字符'\',与C#一样,不能用@。

常见转义字符:\t、\n、\'、\"、\\

正则表达式使用转义字符


js中数据类型转换

一:字符串 转换 数字

         parseInt(numSttring[,radix),字符串转换整数,遇非数字时停止解析没有则NaN

         parseFloat(numString),字符串转换小数

二:任意类型到指定类型的转换:

         将任意类型转换为数字:    Number(object)

         任意类型转换为字符串:    1.String(object)  2.对象.toString()

         任意类型转换为Boolean:   Boolean(object)

三:NaN(Not a Number):当将某类型转换为数字失败时,返回NaN。表示不是一个数字。NaN不等于任何值,包括它自己,需要使用isNaN(arg)函数。(NaN==NaN返回false)

 

         与调用对象的toStrint()方法等效

         特例:当对象为null或undefined时,调用toString会报错,而String()e可以成功


eval()方法

eval(codeString)

1)  将一段字符串的js代码,计算并执行

2)  Alert(eval(‘2+3’));

3)  Eval(‘alert(100)’);

该方知道即可,一般不建议使用,效率低,且不安全

关于&&与||的补充,js中常见的用法    //  &&两边为真取第二个,||两边为真取第一个

        var r = "a" || "";

        var r = null || 15;

        var r = "a" && 0;

        var r = null && 15;

        var r = "12123" || 12;

        var r = "12123" &&12; 


JavaScript中的“普通函数”

1)JavaScript中的函数类似于C#函数,但是功能要比C#函数强大的多

2)普通函数的定义:
function add(){
    return x+y
}

3)定义函数的注意点
一:使用function关键字
二:无返回值类型,无访修饰符,用function代替,好习惯是全名格式为小写开关
三:无参数的类型
四:JavaScript中函数永远有返回值,如果没有执行return语句,则返回undefined,(把函数当作“构造函数”时,return语句将返回)
五:易错:自定义函数名不要与不要和js内置、dom内置等系统函数名重名。比如selectAll、foucus等函数名不要用。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)


Js函数不能重载:可以通过arguments对象

1) Javascript中没能方法重载的概念,遇到同名的函数,会用最后一次函数定义覆盖前面的函数定义,用为即为最后一次的定义的函数,

2) 如实现函数重载的功能
一:通过arguments 对象可以判断用户在调用函数时,是否传递了参数,以及传递几个参数。
二:虽然可以通过arguments对象获取参数,但在实际编程中还是建议编写“命名参数”,增强程序可读性。
三:通过arguments对象获取参数的方式类似于C#中params关键字效果。

3) 函数有“预解析”功能,所以在执行之前会将所有的函数先进行预解析。预解析的时候就会使用最后一次定义的函数覆盖前面定义的函数,但在script中函数只会从上到下

4) 变量与外部变量(函数外部)重名时,优先使用内部(函数内部定义的)变量


JavaScript中“函数”也是“对象”
在JavaScript中函本身就是一个对象。
函数对象的若干成员:
         length属性,获取方法命名参数的个数
         prototype属性、arguments属性(函数执行时才可以获取)
         toString()方法,获取方法的源代码(返回方法的源代码(可以通过javascript编写的函数的源代码))
         apply()、call()、...

匿名函数
1)匿名函数的意思就是指:将函数定义的语句当做一个表达式来处理。既然是表达式,则可以直接赋值,出现在小括号中等等。
2)第一种写法:
         var fn=function(x,y){return x=y};//(不要忘记分号)
         调用:alert(fn(10,20));应用之一:设置事件处理程序。
3)第二种写法:
         var result=(function(x,y){return x+y;})(10,20);
         alert(result);//这种写法表示定义了一个匿名的函数,立即调用。
4)第三种写法(动态函数):
         var fn=new Function("x","y","z","var sum=x+y=z;alert(sum);");
         或:var fn=new Function("x,y,z","var sum=x=y=z;alert(sum;)");
         调用: fn(10,20,30)
5)通过new function()方法定义的匿名,可以将函数的代码用字符串来表示,同时在使用的变量,不会作为页面的“全局变量”出现,在函数外外部也访问不到。不像eval()一样
6)当匿名函数是赋值给一个变量,此条语句是赋值语句,所以会从上到下依次执行,不会进行“函数预解析”



——摘自传智播客javascript视频的课堂笔记


0 0
原创粉丝点击