`

Javascript 第二天

阅读更多
1,对象跟基本类型之间的转换:
不管何时,只是对象非空,在布尔环境中都为true.
如;
new Boolean(false); 
new Number(0);
new String(“”);
new Array();
上面虽然内部值是false,但对象的值是true;
Object  valueOf()  toString()
其中Date类,是先执行toString()转换。

2,js中操作一个数据值:
任何语言都有自己的操作数据的方法;
Js也不例外,js有3种重要的方式来操作一个数据值。
1) 复制它。例如把它赋给一个新的变量。
2) 把它作为参数传递给一个函数或方法。
3) 可以和其他值比较大小。

Js通过传值和传址2种方式操作这些数据的值。
从名称可以看处,传值 是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。
传址 从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。
简单的传址例子:
var a = new Date();
alert(a.getDate());
var b = a ;
b.setDate(21);
alert(a.getDate()) // 输出21

3,一般来说:
基本数据类型通过传值来操作的。(如果忘记了哪些是基本数据类型,可以往回看。)
对象数据类型通过传址来操作的。(比如 数组和函数)
例子:
<script>
//传值
a=1;
b=a;
b=2;
alert(a); //输出 1

//传址
x=[1,2];
y=x;  // 赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。
y[0]=2;
alert(x[0] +" | " +x[1]);  //输出 2  |  2
</script>
其中我们必须注意字符串:
js中字符串是通过传址来复制和传递的,而他们是通过传值来比较的。
对象和数组是用传值来传递的,只不过传递的这个值实际是一个引用,而不是对象本身。
总结:
类型 复制 传递 比较
数字 传值 传值 传值
布尔 传值 传值 传值
字符串 不可变 不可变 传值
对象 传址 传址 传址
不可变:在JS中,没有方法去改变字符串值的内容。
对字符串来说,传值还是传址,意义不大。

4,垃圾收集机制:
Js中自动释放内存。
比如:
var  s  =”heelo”;
var  b   = s.toUpperCase();
s=b; //运行到这里后,js会自动检测不再使用某个对象,因为s=b了,所以js会自动释放字符串“heelo”所占的存储空间。即我们不能再获取原始的 “heelo” 值;.

5 , javascript变量:
Js是非类型的。它的变量可以放任何类型的值。

变量的声明:
var  a  ;
var  b  ;
或者
var  a , b ;
或者
var  a=0 , b=1 ;

重复声明 是合法的,
如果 遗漏声明 , js会隐式的声明该变量。当然隐式声明的变量总是全局变量。

6 , 变量的作用域:
Js有2种:全局和局部。
从名字的定义可以知道,全局变量的作用域是全局性的。
在js代码中,处处都有定义。
局部变量的作用域是局部的。
在函数体内定义。

同名的局部变量的优先级比同名的全局变量高,下面的例子说明了这点:
var a ="abc"; //全局变量
function check(){
var a = "efg"; //同名的局部变量
document.write(a);
}
check(); //  输出 efg

看一个比较经典的例子:
   var scope = "global";
function f(){
     alert(scope); //输出 undefined
var scope = "local";
alert(scope); //输出 local
}
f();

为什么第一个会输出undefined 呢?
因为js规定当 局部变量和全局变量的名称相同的时候,函数体内的同名全局变量会被隐藏。
那么刚才例子 实际 等价于:
function f(){
var scope;
alert(scope);
scope = "local";
alert(scope);
}
f();
OK,如果你看懂了这个例子,说明你对局部和全局的一些区别稍微了解了。

7 , 变量的作用域:
从里到外:
词法作用域 作用域链 变量查找
var x = 1;
function f(){
  var y =2 ;
function g(){
   var z =3 ;
}

} 调用g()对象; z =3 ;

 


调用f()对象; y =2 ;




全局变量  x = 1   在此定义了吗?
         是
否          
获得值
在此定义了吗?
         是
否          
获得值
在此定义了吗?
         是
否          
获得值
未定义

8 , 客户端全局变量:
在客户端js中,Window对象代表浏览器窗口,他是一个全局对象。、
比如 ;我们常用的 parseInt() , Math() 都是Window对象定义的属性。

Js允许多个全局变量的执行环境,每个环境有不同的全局对象。
比如:客户端js的每个独立的浏览器窗口,或者同一窗口的不同帧。
其中的代码都运行在自己的执行环境中,具有自己的全局对象。
当然可以使用 表达式 parent.frames[0].x  ; 来引用第一个帧中的全局变量 x  ;这样就把不同帧中的代码联系起来了。
不过这里有安全性问题。
分享到:
评论

相关推荐

    JavaScript笔记 第二天

    JavaScript是Web开发中不可或缺的一部分,尤其在前端...以上是JavaScript第二天课程的主要知识点,理解并熟练掌握这些内容是成为合格前端开发者的基础。通过不断练习和项目实践,可以逐步提升JavaScript的运用能力。

    第二天JavaScript笔记总结

    第二天JavaScript笔记总结

    JavaScript Day_02

    javascript第二天笔记

    小白学JavaScript的第十二天

    小白学JavaScript的第十二天

    小白学JavaScript的第二天

    个人笔记

    21天学通JavaScript(第2版)

    第二篇专门介绍javascript中内置对象的应用,内容包括javascript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是javascript的高级技术...

    JavaScript高阶第二天.xmind

    JavaScript高阶笔记总结: 目前学到的this指向: 1.普通函数的this指向 window 2.构造函数this指向实例化对象 3.事件中的this指向事件源 4.定时器中的this指向window 5.立即执行函数中的this指向window 6.对象...

    21天学通javascript——PDF完整版下载.zip

    第二篇专门介绍Javascript中内置对象的应用,内容包括Javascript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是Javascript的高级技术...

    JavaScript5天精通

    在第二天的学习中,我们将深入了解JavaScript中的对象和数组。对象是JavaScript中的核心构造,用于存储和组织数据。我们将学习如何创建对象,包括字面量语法和构造函数,以及访问和修改对象属性的方法。数组则是存储...

    javascript教程

    第二天:变量,if-then语段,链接事件,图片交换。 第三天:窗口,架构,及文件目标模块 第四天:循环,序列及功能 第五天:表格,表格及更多的表格。 开始之前,有些重要的事情首先要注意: 首先,Javasript并非...

    javascript学习第二天(运算符的使用).md

    本内容主要讲述javascript中运算符的一些基本使用,以及在使用过程中遇到的一些问题,自己在学习过程的一些记录和心得体会。

    JavaScript基础第01天笔记1

    位是计算机中最小的数据单位,0和1代表二进制状态。字节由8个位组成,是存储和传输数据的基本单位。更高级的单位有KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)等。 3. **JavaScript深入** 3.1 介绍...

    五天学会javascript

    第二天,你将深入理解函数和对象。函数是一段可重复使用的代码块,可以接受参数并返回结果。对象则是一个包含属性(键值对)的容器,可以看作是现实世界中的实体在编程中的抽象。JavaScript中的函数也是对象,可以...

    html入门第二天 html入门第二天

    在HTML入门的第二天,我们不仅加深了对HTML的理解,更迈入了JavaScript的世界,这标志着我们开始探索网页开发的更深层次——互动性和动态效果。HTML作为网页内容的基础框架,而JavaScript则是赋予网页生命力的关键,...

    Javascript基础教程.doc

    - **第二天**:讲解变量、条件语句(if-then)、事件监听(如点击事件)以及动态图片更换。 - **第三天**:探索窗口、框架管理以及文件目标模块的使用。 - **第四天**:掌握循环结构、数组以及函数的定义和调用。 - ...

    JavaScript基础第04天笔记1

    例如,`arrStus[1]`将返回数组中的第二个元素(在JavaScript中是第三个位置)。 3. **遍历数组** - 常用的遍历方法是使用`for`循环。例如: ```javascript var arr = ['red', 'green', 'blue']; for (var i = 0...

    21天学通JavaScript 源代码1(还有10章在源代码2文件)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

    最新Javascript高级教程

    第二页 图象映射与JavaScript 第三页 预装图象 - 是什么? 第四页 预装图象 - 怎么做? 第五页 对象的优点 第六页 创建你自己的对象 第七页 你的面向对象的虚拟宠物 第八页 计算字符串 第九页 获取难以索引的...

    21天学通JavaScript 源代码2(有一部分在源码1文件中)

    第二篇专门介绍JavaScript中内置对象的应用,内容包括JavaScript对象基础、窗口和框架、屏幕和浏览器对象、文档对象、历史对象和地址对象、表单对象和表单元素和脚本化cookie等。第三篇讲解的是JavaScript的高级技术...

Global site tag (gtag.js) - Google Analytics