浅析JavaScript中的同名标识符优先级_javascript技巧
一,局部变量先使用后声明,不影响外部同名变量
var x = 1; // --> 外部变量x
function fn(){
alert(x); // --> undefined 局部变量x先使用
var x = 2; // 后声明且赋值
}
fn();
alert(x); // --> 1
第一点,函数fn内第一句输出x,x是在第二句才定义的。这在JS中是允许的,这里的允许是指不会出现语法错误程序可以运行。
但在其它语言如C,Java中却是不允许的。变量必须先声明后使用,如
public class Test {
public static void main(String[] args) {
System.out.println(x); // 先使用
int x = 10; // 后声明
}
}
Java中编译器会提示错误,程序无法运行。
第二点,函数fn内的局部变量x不会影响到外部的变量x。即fn内alert输出不是1,而是undefined。
二,形参优先级高于函数名
function fn(fn){
alert(fn);
}
fn('hello'); // --> "hello"
可以看到函数名和形参同名都是fn,输出的是字符串"hello",却不是函数fn的函数体(fn.toString())。
三,形参优先级高于arguments
function fn(arguments){
alert(arguments);
}
fn('hello'); // --> "hello"
arguments对象可以直接在函数内使用,是语言本身提供的一个 特殊标识符 。
这里刚好将形参声明成与其同名。输出可以看到是"hello"而非"[object Object]",即形参arguments覆盖了语言本身提供的真正的arguments。
四,形参优先级高于只声明却未赋值的局部变量
function fn(a){
var a;
alert(a);
}
fn('hello'); // --> "hello"
函数fn形参为a,函数内第一句仅声明局部变量a,却并未赋值。从输出结果是"hello"而非undefined可以看出形参a优先级高于仅声明却未赋值的局部变量a。
五,声明且赋值的局部变量优先级高于形参
function fn(a){
var a = 1;
alert(a);
}
fn('hello'); // --> "1"
函数fn形参为a,函数内第一句仅声明局部变量a,赋值为1。从输出结果是"1"而非"hello"可以看出声明且赋值的局部变量a优先级高于形参a。
六,形参赋值给同名局部变量时
function fn(a){
var a = a;
alert(a);
}
fn('hello');
暂不运行,猜测下结果。如果按照第五点:声明且赋值的局部变量优先级高于形参。那么a将是undefined。但实际上a是"hello",即右a是形参a,左a才是局部变量a。

这里的两个a互不干扰,谁也没覆盖谁。这与刚刚说的赋值的局部变量优先级高于形参又矛盾了。但引擎这样做的确是我们想要的,因为并不希望var a = a后a是undefined。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

在使用C++编程语言开发程序时,经常会遇到“找不到标识符”的报错。这种报错信息通常意味着编译器无法找到某个变量、函数或类的定义。这篇文章将解释这种报错的原因,以及如何修复这种问题。找不到标识符的原因首先,让我们看一下为什么会出现“找不到标识符”的报错。这种报错通常有以下几种原因:1.1变量、函数或类没有被定义这是最常见的“找不到标识符”的原因之一。如果一个

c语言合法标识符的要求是:1、标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成;2、第一个字符必须是字母或下划线,不能是数字;3、标识符中的大小写字母是有区别的,代表不同含义;4、标识符不能是关键字。

在Go语言中,标识符用于命名实体,语法规则包括以字母或下划线开头,可以包含字母、数字或下划线,且不能是保留关键字。语义上,常量标识符以大写字母开头表示不变值,变量标识符以小写字母开头表示可变值,类型标识符以大写字母开头表示一组值,函数标识符以小写字母开头并通常冠以Func前缀。理解这些规则和语义对于创建清晰、可维护的代码至关重要。

在javascript中,标识符是指用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系;标识符通常由字母和数字以及其它字符构成。合法的标识符其第一个字符必须是字母、下划线或美元符号;且不能与JavaScript关键字、保留字重名。

标识符用于程序中的任何变量、函数、数据定义、标签等。在开始任何语言之前,您至少必须知道如何命名标识符。在C语言中,标识符是字母数字字符的组合,即首先以字母或下划线开头,其余为字母、任意数字或下划线。标识符命名规则标识符命名必须遵循的规则如下-字母字符的大小写是重要的。例如,对变量使用“TUTORIAL”与对变量使用“tutorial”不同,也与对变量使用“TutoRial”不同。这三个变量都引用不同的变量。对于标识符的长度没有规定。如果标识符超过31个字符,我们可能会在某些编译器中遇到问题。对于

c语言标识符有三类:1、关键字,是由C语言规定的具有特定意义的字符串,通常也称为保留字;2、预定义标识符,是系统预先定义的标识符,如函数库中的函数名、宏定义和类型别名;3、用户定义标识符,是用户根据需要自己定义的标识符,一般用来给变量、函数、数组等命名。用户标识符如果与关键字相同,则编译时会出错;如果与预定义标识符相同,编译时不会出错,但预定义标识符的原意失去了。

Go标识符命名规则:标识符必须以字母或下划线开头,区分大小写,避免使用关键字。最佳实践包括使用驼峰表示法、避免缩写、遵循一致性。遵循这些规则可以优化代码的可读性、可维护性和质量,从而提高代码库的可理解性。

php中标识符允许出现的符号有字母、数字、下划线和中文字符。详细介绍:1、字母和数字,标识符可以由字母和数字组成,它们可以以字母开头,后面可以跟随任意数量的字母、数字或下划线;2、下划线,标识符可以包含下划线,但不能以下划线开头;3、中文字符,从PHP 7.2版本开始,允许在标识符中使用中文字符,$中文变量、function中文函数()等都是合法的标识符等等。
