JS的函数特殊性:JS中的函数可以被当做一种数据类型来看待,是真正的数值,因此可以被存储在变量数组和对象中,也可以作为参数传递给其他的函数,可以被赋值给某个对象的属性。
定义一个概念:函数直接量(function literal),见例子:
//使用函数定义来定义函数
function square(x){
return x*x;
}
//使用函数直接量来定义:
var squre = function(x){return x*x;}
两者之间的最大差别是函数直接量可以出现在其他JavaScript表达式中。
变量:如果省去var,则隐式声明的变量是全局变量,即便是在方法体中声明的,看例子:
var i=0;
function square(x){
var j=i;
//j=i;
}
square(i);
alert(typeof(j));
例子中,如果使用var j=i声明j,则j只是方法中的局部变量,所以得到undefined。而如果改成j=i,隐式声明变量为全局变量,得到number。
另外,在函数体内部,局部变量的优先级比全局变量的优先级要高。函数可以嵌套定义...在函数中声明的所有变量,无论是在哪里声明的在整个函数中他们都是有定义的。读起来好难理解啊,看例子:
function square(x){
var i=0;
var j=0;
for(var k=0;k<10;k++){
document.write(k);
}
document.write(k);
document.write(j);
alert(i+","+j+","+k);
}
square(1);//得到0,0,10,而不是0,0,undefined
再看
var param="global";
function t(){
alert(param);//得到global,全局变量其起作用
}
t();
var param="global";
function t(){
alert(param);//得到undefined。其实在这里局部变量param已经定义了
var param="local";
alert(param);//得到local
}
t();//函数t中声明了局部变量,局部变量的优先级高于全局变量
觉得不可思议吗?因为JS与C、Java等语言不同,没有块级作用域这个概念,只要在函数体中声明了这个变量,那么再整个函数体中都有它的定义,无论是变量声明前的代码还是变量声明后的代码。区别只是:前面的代码这个变量的值为undefined,而后面的代码可能赋值了。
typeof运算符:检测运算数的类型:
- 数字、字符串、或者布尔值:返回number,string和boolean
- 对象、数组和null:返回object
- 函数:function
- Number、String、Boolean和Date、RegExp:返回object
- 未定义:undefined
delete运算符:删除运算数所指定的对象的属性、数组元素或变量。如果删除成功则返回true,如果运算数不能被删除则返回false。如用var声明的变量和客户端的属性就不能被删除。如果delete使用的运算数不是存在的属性、数组元素或变量时,它将返回true(或许认为操作后的结果是该变量不存在了,因此可以看做是删除成功,故返回true)。看例子:
var o={x:1,y:2};
alert(delete o.x);//删除对象的属性,返回true
alert(typeof o.x);//undefined
alert(delete(o.x));//删除不存在的属性,返回true
alert(delete o);//o是用var声明的,不能删除,返回false
alert(delete 1);//不能删除一个整数,返回false
x=1;
alert(delete x);//可以删除没用var声明的变量,返回true
alert(":"+typeof(x));//undefined
void运算符:他可以出现在任何类型操作数之前,它总是舍弃运算数的值,然后返回undefined。这在客户端的javascript:URL中经常使用,如:
<a href="javascript:void window.open();">Open New Window</a>
另外,void(0)和undefined的作用相同,在此void(0)可以看做用于产生undefined。
分享到:
相关推荐
Contiki学习笔记:进程、事件、etimer关系 Contiki 实例: Contiki学习笔记:创建两个交互进程 Contiki 主函数剖析: Contiki学习笔记:main函数剖析 Contiki学习笔记:启动一个进程process_start Contiki学习笔记...
SQL.SERVER.2008学习笔记:日常维护、深入管理、性能优化]
SQL SERVER 2008 学习笔记:日常维护、深入管理、性能优化。
前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, 工具, 框架, 资源 前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, 工具, 框架, 资源 前端学习笔记整理:HTML, CSS, JavaScript, Web 性能优化, ...
读书笔记:javascript和typescript命名规范和原则
读书笔记:Javascript基础总结Dom事件原生函数正则
读书笔记:JavaScript版本代码整洁之道中文版
ORACLE学习笔记:日常应用、深入管理、性能优化.part1
前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar前端学习笔记网站(HTML5+CSS3+JavaScript前端网页web课程设计).rar ...
学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:...
以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...
个人Javascript学习笔记 精华版 本资源为个人Javascript学习笔记的精华版,涵盖了Javascript的基础知识、事件处理、对象和系统函数、浏览器对象等方面的内容。下面是对每个知识点的详细说明: 1. 什么是JavaScript...
MS.SQL.Server.2008.学习笔记:日常维护、深入管理、性能优化.part1.rar; SQLServer; 2008; 维护; 管理; 优化; 第一部分(共两部分)
1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc 4.iBatis2学习笔记:SqlMap的配置总结(18条).doc 5.iBatis2学习笔记:入参和返回值的问题.doc ...
2. 数据类型:JavaScript是动态类型语言,数据类型包括字符串(String)、数字(Number)、布尔值(Boolean)、null、undefined、对象(Object)和Symbol(ES6新增)。 3. 运算符:JavaScript支持算术运算符(+,-...
本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...
读书笔记:常见javascript知识点
数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数排序数据结构学习笔记排序算法:基数...
- 变量声明:JavaScript支持var、let和const关键字声明变量,理解它们的作用域和提升特性至关重要。 - 数据类型:JavaScript有七种数据类型,包括原始类型(如字符串、数字、布尔、null和undefined)和引用类型...