javascript_video_1

1、js推出的意义
---------
使得浏览器可以解决一些简单的功能,不需每次的执行都请求服务器。
2、JS的组成
-------
- 1)核心语法
- 2)DOM文档对象模型
- BOM浏览器对象模型
3、JS的定义
--------
是一种脚本语言,不需像JAVA一样要编译class文件才可执行,由所使用的浏览器执行,浏览器的解释器将命令翻译为机器可识别的指令,然后执行。
4、JS的特点:
----------
- js是基于对象和事件的脚本语言,主要应用在客户端,由浏览器来执行JS代码
- js与用户执行信息交互
- 安全性,不允许访问本地硬盘
- 跨平台,只要有一个支持js的浏览器即可
- js也是一门编程语言,所以也具有编程语言的特性
5、代码的执行
-------
- js代码、网页代码是从上到下依次执行的 如果一个
- script块中的代码有语法错误,则整个script块不执行

6、src与href区别
----------
- src(source)表示引用资源,表示替换当前元素,用在img,script,iframe上, 它们如果不写src,那么本身没有内容,script会不存在脚本代码,img会显示x,iframe会显示空白页。<script src="js.js"></script>当浏览器解析到这一句的时候会暂停其他资源的下载和处理,直至将该资源加载,编译,执行完毕,图片和框架等元素也是如此,类似于该元素所指向的资源嵌套如当前标签内,这也是为什么要把js饭再底部而不是头部。

- href(HypertextReference)标识超文本引用,用在link和a等元素上,href是引用和页面关联,是在当前元素和引用资源之间建立联系,让当前标签能够链接到目标地址上,并不是为了把目标拉进页面本身内来替换本身的内容。<link href="common.css" rel="stylesheet"/>当浏览器解析到这一句的时候会识别该文档为css文件,会下载并且不会停止对当前文档的处理,这也是为什么建议使用link方式来加载css而不是使用@import。

rel 用于定义当前文档与被链接文档之间的关系。
7、js的语法
-------

- 列表内容
- 严格区分大小写
- 建议在用单引号,避免和html中的双引号冲突
- js的变量声明不需要写数据类型,统一由var关键字声明
- js是“弱类型”语言,支持“动态类型”,即类型是可以随意转换的

8、js的数据类型
---------
- 基本数据类型:布尔、数字、字符串、undefined、null
- 引用数据类型:object,包括任何对象、数组、函数
- var a =null // a = undefined
- var b; var c = b+1 ;//输出为 NaN 属于 undefined类型
- 当使用没声明的变量时,浏览器会报错,数据类型是undefined,可以采用 typeof(a)=="undefined" 校验变量是否可用
- 当方法无返回值时,输出该方法得到的是 undefined
- 无论是 null 还是undefined,都表示该变量不可用,所以在使用前都可以对变量做校验,判断变量是否可用
- 把null转为数字时,结果是0,把boolean 转为数字,false 为 0 true为 1,把undefined转为数字,结果是NaN , 注意NaN 一个是数字类型。
- 判断一个值是不是NaN只能用 isNaN( )方法判断
9、== 与 ===的区别
-------------

- ==:左右两边如果类型同,则直接比较,如果不同则将自动转换为相同类型再比较
- 其中:null == undefined、 null == null、undefined == undefined
- 如果等号两边的变量指向了同一个对象,返回true
- 如果一个是字符串类型,一个是数字类型,那么js引擎会尝试将字符串类型转换为数字类型后再做比较
- 如果一个是布尔类型,一个是数字类型,那么js引擎会尝试将布尔类型转换为数字类型后再做比较
- 如果一个是字符串类型,一个是object类型,那么js引擎会尝试将object类型转换为字符串类型后再做比较
- 如果一个是数字类型,一个是object类型,那么js引擎会尝试将object类型转换为数字类型后再做比较

- ===:运算前不进行类型的转换,并且只有左右两边的类型相同、值相同时才会返回true
- switch 内部使用 === 来运算


10、js变量的作用域
-----------
- 在页面上直接声明的变量为“全局变量”,在整个页面都可以访问,直接赋值的变量也是全局变量,不建议使用全局变量。
- 在函数内部声明的变量为“局部变量”作用与范围为当前函数内部
- js中没有块级作用域范围,即在函数内部声明的变量,整个函数的任何地方都可以使用
- 当重复声明变量时,js会自动忽略第一次以后的所有声明语句,但赋值语句正常运行

11、类型转换
-------

|例 句 |结 果|
|-----------|:------------|
|parseInt('1234') |1234
|parseInt('1234.00') |1234
|parseInt('1234abc') |1234
|parseInt('abc1234') | NaN
|parseFloat('1234.123') |1234.123
|parseFloat('1234.123a') |1234.123
|parseFloat('a1234.123') |NaN
|Number('1234.123') |1234.123
|Number('1234.123aa') |NaN
|String(eval('12+10')) |22
|Boolean('0'),Boolean('567'),Boolean(567) |true
|Boolean(null),Boolean(false),Boolean(0),Boolean(''),Boolean() |false
|this.toString() |[object]
|(typeof(this)).toString() |object
|eval('12+34') |46
|eval('12+34')+'' |46
|eval('12+34')*1.0 |46
|typeof(eval('12+34')*1.0) |number
|typeof(eval('12+34')+'') |string

12、eval( n ) 函数
---------------

eval( n ) // 表示吧字符串当成js代码来解析执行,一般不建议使用,效率的且不安全

13、 || 与 &&
-----------

- 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
- 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
- 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;
- 只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
- “&&”的优先级是高于“||”

console.log(true || 10); // true, 第一个操作数是true,结果是第一个操作
console.log(false || b); //b ,第一个操作数是false,结果是第二个操作数b
console.log(100 || false); //100, 第一个操作数是100,结果100
console.log(undefined || 9); // 9, 第一个操作数是undefined转false,结果9
console.log(NaN || false); //false, 第一个操作数是NaN转false,结果第二个操作数
console.log(null || a); //a ,第一个操作数是null转false,结果a
console.log('' || false); //false, 第一个操作数是空串转false,结果第二操作数
console.log(0 || 100); // 100
var a = [1,2,3] ;
var b = "hello" ;
var obj = new Object() ;
console.log(a || b); // a
console.log(obj || 200); // obj
alert( 1 | | 'a' && 2); // 1

14、函数的定义
--------
(1)function 关键字 (2)无返回值类型 (3) 无参数类型
- 1 函数定义语句
function sum( a, b ){
return a+b; } console.log( sum(2,3) ) ; // 5
- 2 函数直接量表达式
var fn= function f( x ){
return x^2 ; };
console.log( fn( 3 ) ); // 9
console.log( fn ); // 控制台输出函数的源代码
- 3 Function()构造函数
var f = new Function("x","y","return x+y");
alert(f(3,7)); // 10 //Function()构造函数

15、js 没有函数重载
------------
因此所有遇到同名的函数,会用最后一次的函数定义覆盖前面的定义

16、函数和变量的与预解析
-------------

- 变量声明及函数声明预解析时,变量解析为undefined,函数解析为其本身。这个特性可以被称为声明提前,即在函数体内声明的所有变量,在声明之前已经有定义,但只有在执行到这个变量时才会被真正赋值。

- 1、预解析时函数声明优先级高于变量声明,函数声明会覆盖变量声明,但不会覆盖变量赋值。如果声明变量的同时初始化或赋值那么变量优先级高于函数。
var a = 1;
function a(){
alert("函数内部"+a);
}
alert(a); // 1
a(); // 不执行

- 2、没有使用var声明的变量为全局变量,预解析时没有使用var声明的同名变量会被隐藏。
- var声明的变量
var a =1;
function fn(){
console.log(a);
function fn1(){
console.log(a);
}
fn1();
var a =2;
}
fn(); //undefined undefined
console.log(a); //1

- 没有var声明的变量
var a =1;
function fn(){
console.log(a);
function fn1(){
console.log(a);
}
fn1();
a =2;
}
fn(); //1 1
console.log(a); //2
- 3、变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
- 4、声明过的变量不会重复声明
17、 变量的重名
--------------
- 变量的作用域
Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分)。切记,是function块,而for、while、if块并不是作用域的划分标准
- 当全局变量跟局部变量重名时,局部变量的scope会覆盖掉全局变量的scope,当离开局部变量的scope后,又重回到全局变量的scope
- (1)
var a = 1 ;
function test(){
alert(a);
a = 2 ; // 重新赋值
alert(a);
}
test(); // 1 2
- (2)
var a =1;
function test(){
alert(a);
var a = 2; // 重新定义并赋值
alert(a);
}
test(); // undefined 2
alert(a); // 1
- (3)
var a = 100;
function test(){
console.log(a); //已经声明了变量a,但是并没有定义,输出 undefined
var a = 10;
console.log(a);
}
test(); // undefined 10
- (4)
var a = 100;
function test(){
console.log(a);
a = 10; // a=10声明了一个全局变量,所以上一行会输出全局变量的值
console.log(a);
}
test(); // 100 10
console.log(a); // 10

18、函数的参数
----------
- js 函数的参数是可变的,即参数个数、参数类型、不传参数都是可以选择的 ,定义参数的目的仅仅是
为了使用的方便;
- 参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。arguments对象并不是Array的实例,它是一个类数组对象,可以使用方括号语法访问它的每一个元素
- function add(x){
alert(arguments[0]); //1
alert(arguments[1]); //2
alert(arguments[2]); //3
}
add(1,2,3);

19、函数也是对象
---------

- 当我们定义一个函数时,javascript实际上在后台为你创建了一个对象。这个对象的名称就是函数名本身。这个对象的类型是function


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值